1.部署
将Hibernate解压后lib下required的所有jar包导入工程中,其余文件夹的jar包可根据实际需要导入。
2.在src下创建hibernate.cfg.xml配置文件
hibernate.cfg.xml
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/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.url">jdbc:sqlserver://localhost:1433;DatabaseName=goodsmessage</property>
<property name="hibernate.connection.username">mike</property>
<property name="hibernate.connection.password">mike</property>
<property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
<mapping resource="conn/User.hbm.xml"/>
<mapping resource="conn/Goods.hbm.xml"/>
<mapping resource="conn/Orders.hbm.xml"/>
<mapping resource="conn/Cart.hbm.xml"/>
<mapping resource="conn/SuperType.hbm.xml"/>
<mapping resource="conn/SubType.hbm.xml"/>
</session-factory>
</hibernate-configuration>
3.创建数据库表所对应的类,并编写或使用工具生成对应的hbm.xml文件
User.java
package conn;
public class User {
private String username;
private String pwd;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
User.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="conn.User" table="users">
<id name="username" type="java.lang.String">
<column name="username" />
<generator class="assigned"/>
</id>
<property name="pwd" type="java.lang.String">
<column name="pwd" />
</property>
</class>
</hibernate-mapping>
<generator class="assigned"/>指定了主键生成方式。
native:由数据库对id赋值,Hibernate根据数据库适配器的定义,自动采用identity、hilo、sequence的其中一种作为主键生成方式
hilo:用过hi/lo算法实现的主键生成机制,需要额外的数据库表保存主键生成历史状态
seqhilo:与hilo类似,通过hi/lo算法实现的之间生成机制,只是主键历史状态保存在Sequence中,适用于支持Sequence的数据库,如Oracle
increment:主键按数值顺序递增
identity:采用数据为提供的主键生成机制,如SQL Server、MySQL中的自增主键生成机制
sequence:采用数据库提供的sequence机制生成主键,如Oracle Sequence
uuid.hex:由Hibernate基于128位唯一值产生算法生成十六进制数值作为主键,在最大限度上保证产生的id的唯一性
foreign:使用外部表的字段作为主键
4.应用
//加载配置文件
Configurationconfiguration = new Configuration().configure();
//向Hibernate注册相关服务
@SuppressWarnings("deprecation")
ServiceRegistryserviceRegistry= newServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
//创建会话工厂
SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
Session session= null;
//一个典型的事务应使用try{}catch{}finally{}
try{
//打开会话
session = factory.openSession();
//开始事务
session.beginTransaction();
/*
处理事务...
*/
//提交事务
session.getTransaction().commit();
}catch(Exception e){
e.printStackTrace();
//事务回滚
session.getTransaction().rollback();
}finally{
if(session != null){
if(session.isOpen()){
//关闭session
session.close();
}
}
}