一、下载
Hibernate下有ORM(关系型数据库)、OGM(NoSQL数据库)、Search(对象全文检索)、Validator的工具。
ORM 5.2下载地址为:http://hibernate.org/orm/releases/5.2/
使用时,将Hibernate Lib下的required Jar包引入即可,其他高级功能可继续引用相关包。
二、工具
Hibernate通过XML将对象映射到数据库表,可以通过Hibernate Tools自动生成XML、POJO等。
除Hibernate Tools外,也可使用xdoclet来生成XML,xdoclet地址:http://xdoclet.sourceforge.net/index.html
Hibernate Tools下载地址:http://tools.jboss.org/downloads/
三、关键文件
- Hibernate Configuration File(cfg.xml)
配置数据库连接信息(JDBC)以及注册映射:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!--数据库连接配置--> <property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property> <property name="hibernate.connection.password">password</property> <property name="hibernate.connection.url">jdbc:sqlserver://ipaddress:port;DatabaseName=dbname;SelectMethod=cursor</property> <property name="hibernate.connection.username">username</property> <property name="hibernate.default_catalog">dbname</property> <property name="hibernate.default_schema">dbo</property> <!--数据库方言--> <property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property> <!--加载所有映射--> <mapping resource="lims/hibernate/LIMS_TESTS.hbm.xml"/> </session-factory> </hibernate-configuration>
- Hibernate Console Configuration
当使用File->New后,竟然发现找不到这个文件,正确的打开方式为:Run->Run Configurations。
实质上,Hibernate Configuration File(cfg.xml)是与项目相关的,例如包括了该项目使用的数据库连接信息,而Hibernate Console Configuration则是在项目开发过程中工具使用相关的,即可通过它来生成代码。
配置时,选择好项目及其配置文件路径,在Classpath中引入该项目所用的数据库的JDBC驱动。
- Hibernate Reverse Engineering File(Revenge.xml)
该文件为数据库逆向工程配置文件,如果先创建数据库表,则可通过已有的数据库表来创建POJO和ORM XML等文件。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-reverse-engineering PUBLIC "-//Hibernate/Hibernate Reverse Engineering DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-reverse-engineering-3.0.dtd" > <hibernate-reverse-engineering> <table-filter match-catalog="dbname" match-schema="dbo" match-name="tablename"/> </hibernate-reverse-engineering>
根据该配置,使用Hibernate Tools可生成POJO和ORM XML等代码:
使用Hibernate Tools生成代码时,指定Hibernate Reverse Engineering File:
- Hibernate XML Mapping File(hbm.xml)
Hibernate XML Mapping File是关键,各种映射都通过其实现。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" > <hibernate-mapping package="package name"> <class name="class name" table="table name"> <!-- 主键 ,id,映射--> <id name="property name" column="column name"> <!-- <generator class="native"/> --> </id> <!-- 非主键,property,映射 --> <property name="property name" column="column name" ></property> </class> </hibernate-mapping>
一个简单的示例如上所示,配置包名、类名、类属性和表字段映射即可。
复杂的应用,可以进一步配置字段的数据类型、长度、唯一约束等。
ID可配置自动生成方式,自增序列值、GUID值等,或可不配置,此时在业务代码中根据业务规则生成并赋值到Java对象中。
联合主键时,除了实体类外,需创建ID类,id替换为composite-id定义。
外键通过many-to-one配置。
四、示例代码
// 对象 tests test = new tests(); test.setTestcode(1); test.setTestname("test"); // 获取加载配置文件的管理类对象 Configuration config = new Configuration(); // 默认加载src/hibenrate.cfg.xml文件 config.configure(); // 创建session的工厂对象 SessionFactory sf = config.buildSessionFactory(); // 创建session (代表一个会话,与数据库连接的会话) Session session = sf.openSession(); // 开启事务 Transaction tx = session.beginTransaction(); //保存-数据库 session.save(test); // 提交事务 tx.commit(); // 关闭 session.close(); sf.close();