Hibernate 是一个ORMapping的实现, 所以主要功能就是以对象的形式操作数据库。
开发步骤:
1. 持久化类的设计
2. 持久化类和关系数据库的映射
3. 应用的开发
POJO类: 只包含setter及getter方法的类。 (Plain Old Java Objects)
POJO很像JavaBean, 属性通过getter和setter方法访问, 对外隐藏了内部实现的细节。
HBM映射: 描述表和类之间的关系
Example:
sql:
DROP TABLE person ;
CREATE TABLE person
(
id varchar(32) not null primary key,
name varchar(30) not null,
password varchar(30) not null,
sex varchar(2),
email varchar(30)
);
commit ;
Person.hbm.xml:
<class name="Person" table="PERSON">
<id name="id" column="ID" type="string">
<generator class="uuid.hex"/>
</id>
<property name="name" column="NAME" type="string" not-null="true" />
<property name="password" column="PASSWORD" type="string" not-null="true" />
<property name="sex" column="SEX" type="string" />
<property name="email" column="EMAIL" type="string" />
</class>
hibernate.cfg.xml: 对hibernate环境配置的,包括使用的数据库或数据源
方言: 所要使用的数据库类型
POJO类的名称最好与表名一致:
<session-factory>
<property name="myeclipse.connection.profile">Oracle 9</property>
<property name="connection.url">jdbc:oracle:thin:@localhost:1521:MLDN</property>
<property name="connection.username">scott</property>
<property name="connection.password">tiger</property>
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>
<property name="show_sql">true</property>
<mapping resource="org/lxh/hibernate/demo01/Person.hbm.xml" />
</session-factory>
Session是一个接口, 必须通过其他类实例化, 格式是固定的
//找到Hibernate配置
Configuration config = new Configuration().configure().
//从配置中取出SessionFactory
SessionFactory factory = config.buildSessionFactory();
//从SessionFactory中取出一个Session
this.session = factory.openSession() ;
事务处理, 在插入完成之后, 必须将事务提交: Transaction
Configuration类负责管理Hibernate的配置信息。包括一下内容:
---Hibernate运行的底层信息: 数据库的URL、用户名、密码、JDBC驱动类、数据库Dialect, 数据库连接池等
---Hibernate 映射文件 (*.hbm.xml)
SessionFactory: 应用程序可以从这里获得Session实例。它可以缓存生成的SQL语句和Hibernate在运行时使用的映射元数据
---Session 不是线程安全的, 她代表与数据库之间的一次操作, 他的概念介于Connection和Transaction之间
---Session 也称为持久化管理器, 因为她是与持久化有关的操作接口
---Session 通过SessionFactory打开, 在所有的工作完成后, 需要关闭。
---她与Web层的HttpSession没进行操作时有任何关系
Transaction: 她将应用代码从底层的事务实现中抽象出来, 允许应用通过一组一致的API控制事务边界。 使用Hibernate进行操作时(增删改)必须显示的调用Transaction (默认autoCommit=false)。