这篇文章讲述的是一个hibernate的简单例子的实现,如有错误或者不当之处,还望各位大神批评指正。
目标
- 配置hibernate
- 实现学生类的ORM映射
- 实现对学生的添加、修改、删除
配置
hibernate.cfg.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration SYSTEM
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 这个属性使 Hibernate 应用为被选择的数据库生成适当的 SQL -->
<property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>
<!-- JDBC 驱动程序类 -->
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<!-- Assume test is the database name -->
<!-- 数据库实例的 JDBC URL -->
<property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
<!-- 数据库用户名 -->
<property name="hibernate.connection.username">scott</property>
<!-- 数据库密码 -->
<property name="hibernate.connection.password">tiger</property>
<!-- 是否显示sql -->
<property name="hibernate.show_sql">true</property>
<!-- 是否将sql格式化 -->
<property name="hibernate.format_sql">true</property>
<!-- 是否自动在数据库中生成表 -->
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- List of XML mapping files -->
<!-- 下面是映射的类 -->
<mapping resource="com/cn/cmc/model/Student.hbm.xml"/>
</session-factory>
</hibernate-configuration>
Student.hbm.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.cn.cmc.model.Student" table="STUDENT">
<id name="id" type="int" column="id">
<generator class="sequence"/>
</id>
<property name="name" column="name" type="string"/>
<property name="score" column="score" type="float"/>
</class>
</hibernate-mapping>
hibernate的执行过程
- 创建一个sessionfactory对象
- 创建一个configuration对象初始化hibernate.cfg.xml配置文件
- 创建一个会话session
- 开启事物
- 执行操作
- 提交事物
- 关闭session
- 关闭sessionfactory对象
功能的实现
初始化配置:
static {
Configuration config = new Configuration().configure() ;
//sessoinFactory = config.buildSessionFactory() ;
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
sessionFactory = config.buildSessionFactory(serviceRegistry) ;
}
添加:
public void addStudent(Student student) {
// TODO Auto-generated method stub
Session session = sessionFactory.openSession() ;
Transaction transaction = session.beginTransaction() ;
session.save(student) ;
transaction.commit();
session.close() ;
sessionFactory.close();
}
删除:
public void addStudent(Student student) {
// TODO Auto-generated method stub
Session session = sessionFactory.openSession() ;
Transaction transaction = session.beginTransaction() ;
Student student = (Student) session.get(Student.class, id) ;
session.delete(student);
transaction.commit();
session.close() ;
sessionFactory.close();
}
更新:
Session session = sessionFactory.openSession() ;
Transaction transaction = session.beginTransaction() ;
session.update(student);
transaction.commit();
session.close() ;
sessionFactory.close();
测试
插入:
Student student = new Student() ;
student.setId(100001);
student.setName("cmc");
student.setScore(100);
StudentDao stdDao = new StudentDao() ;
stdDao.addStudent(student);
删除:
StudentDao stdDao = new StudentDao() ;
stdDao.delStudent(1);
更新:
StudentDao stdDao = new StudentDao() ;
stdDao.update(student);