Java-Hibernate - EJB 注解映射
2015-11-29 12:25
519 查看
Hibernate - EJB 注解映射
转载自:https://www.shiyanlou.com/courses/document/992一、实验环境说明
1. 环境登录无需密码自动登录,系统用户名 shiyanlou,密码 shiyanlou
2. 环境介绍
本实验环境采用带桌面的 Ubuntu Linux 环境,实验中可能会用到桌面上的程序:
XfceTerminal: Linux 命令行终端,打开后会进入 Bash 环境,可以使用 Linux 命令;
Firefox:浏览器,可以用在需要前端界面的课程里,只需要打开环境里写的 HTML/JS 页面即可;
GVim:非常好用的编辑器,最简单的用法可以参考课程 Vim编辑器。
Eclipse:Eclipse 是著名的跨平台的自由集成开发环境(IDE)。主要用来 Java 语言开发,但是目前亦有人通过插件使其作为 C++ 和 Python 等语言的开发工具。
3. 环境使用
使用 GVim 编辑器输入实验所需的代码,然后使用 XfceTerminal 命令行环境进行编译运行,查看运行结果,运行后可以截图并分享自己的实验成果,实验楼提供的截图是后台截图,无法作弊,可以真实有效证明您已经完成了实验。
实验记录页面可以在“我的课程”中查看,其中含有每次实验的截图及笔记,以及每次实验的有效学习时间(指的是在实验桌面内操作的时间,如果没有操作,系统会记录为发呆时间)。这些都是您学习的真实性证明。
二、前言
本次课程使用 EjB 注解映射的方式,来实现上节课的示例。企业级 JavaBean(Enterprise JavaBean, EJB)是一个用来构筑企业级应用的服务器端可被管理组件。EJB 注解表达了和 Hibernate 持久化实体对象同样的概念。三、新建项目工程
说明:Hibernate 以及其他必要文件已经内置在了实验环境中。(1)导入必要的 JAR 包
新建一个 Java 工程,然后引入必要的 jar 包,右击项目工程,依次选择 Properties->Java Build Path->Libraries->Add External JARs。Hibernate jar 包路径为:
/home/shiyanlou/hibernate-release-4.3.9.Final/lib/required/;mysql-connector jar 包的路径伪:
/home/shiyanlou/mysql-connector-java-5.1.35-bin.jar。最后总的需要的包如下:
(2)新建实体类 User.java
与上节课示例类似,一个用户具有:id(主键),以及 username、password 两个属性。不同的是这里采用的 EJB 注解方式,可以看到 User 类被
@Entity注解成实体,id 被
@Id注解成主键。
@Entity注解可以将一个类声明为一个实体 bean(即一个持久化 POJO 类)
@Id注解则声明了该实体 bean 的唯一标识属性(对应数据库主键 key)
package shiyanlou.hibernate.ejb3; import javax.persistence.Entity; import javax.persistence.Id; @Entity // @Table(name='') // 数据库中默认会对应生成同名的 Table // 如果要修改 Table 名,使用 @Table(name='') // '' 内为自定义的 Table 名 public class User { private int id; private String username; private String password; @Id public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
(3)配置 hibernate.cfg.xml
在 src 目录下,新建 hibernate.cfg.xml 文件,其配置如下:
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC '-//Hibernate/Hibernate Configuration DTD 3.0//EN' 'http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd'> <hibernate-configuration> <session-factory> <!-- Database connection settings --> <!-- 表示使用 mysql 数据库驱动类 --> <property name='connection.driver_class'>com.mysql.jdbc.Driver</property> <!-- jdbc 的连接 url 和数据库(使用我们之前新建的 hibernate)--> <property name='connection.url'>jdbc:mysql://localhost:3306/hibernate</property> <!-- 数据库用户名 --> <property name='connection.username'>root</property> <!-- 密码(这里为空) --> <property name='connection.password'></property> <!-- 数据库使用的方言 --> <property name='dialect'>org.hibernate.dialect.MySQLDialect</property> <!-- Echo all executed SQL to stdout --> <!-- 设置 打印输出 sql 语句 为真 --> <property name='show_sql'>true</property> <!-- 设置格式为 sql --> <property name='format_sql'>true</property> <!-- 第一次加载 hibernate 时根据实体类自动建立表结构,以后自动更新表结构 --> <property name='hbm2ddl.auto'>update</property> <!-- 映射文件 --> <!-- <mapping resource='shiyanlou/test/hibernate/entity/User.hbm.xml'/> --> <!-- 这里是最明显的不同,映射变成了 User 实体类 --> <mapping class='shiyanlou.hibernate.ejb3.User' /> </session-factory> </hibernate-configuration>
可以看到,最大的变化就是映
b67b
射的变化,由于我们采用了 EJB 注解的方式,因此不再需要 User.hbm.xml 来完成映射,从而映射信息也从 User.hbm.xml 变成了 User 这个实体类。
四、运行
首先要确保 MySQL 数据库中有 hibernate 这个数据库(建立数据库的具体方法见上一节课程),然后编写一个测试类,UserTest.java:(1)增
package shiyanlou.hibernate.ejb3; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import shiyanlou.hibernate.ejb3.User; public class UserTest { public static void main(String[] args) { Configuration configuration = new Configuration().configure(); SessionFactory sessionFactory = configuration.buildSessionFactory(); Session session = sessionFactory.openSession(); session.beginTransaction(); User user = new User(); user.setId(1); user.setUsername('admin'); user.setPassword('admin'); session.save(user); session.getTransaction().commit(); session.close(); sessionFactory.close(); } }
Eclipse 控制台输出:
前面提到过,数据库中是生成同名的表,对比查看:
五、小结
本次课程我们利用 EJB 注解映射的方式来实现上一节课的内容。六、思考
利用 EJB 注解映射,实现其他的(删、查、改)操作。相关文章推荐
- Hibernate Oracle sequence的使用技巧
- jsp Hibernate批量更新和批量删除处理代码
- jsp hibernate的分页代码第1/3页
- JAVA+Hibernate 无限级分类
- SSH整合中 hibernate托管给Spring得到SessionFactory
- jsp hibernate 数据保存操作的原理
- hibernate中的增删改查实现代码
- 解决hibernate+mysql写入数据库乱码
- java优化hibernate性能的几点建议
- java Hibernate延迟加载
- hibernate 常用方法介绍
- JQuery+Ajax+Struts2+Hibernate框架整合实现完整的登录注册
- 深入理解Hibernate中的flush机制
- 简单的手工hibernate程序示例
- 解析使用jdbc,hibernate处理clob/blob字段的详解
- 浅析java程序中hibernate的应用总结
- java面试常见问题之Hibernate总结
- 关于Hibernate的一些学习心得总结
- 浅析Java的Hibernate框架中的缓存和延迟加载机制
- Hibernate管理Session和批量操作分析