1.配置 hibernate.cfg.xml
<?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">
oracle.jdbc.OracleDriver
</property>
<property name="hibernate.connection.url">
jdbc:oracle:thin:@localhost:1521:orcl
</property>
<property name="hibernate.connection.username">hibernate</property>
<property name="hibernate.connection.password">test</property>
<property name="hbm2ddl.auto">create</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.jdbc.fetch_size">100</property>
<property name="hibernate.jdbc.batch_size">30</property>
<property name="hibernate.current_session_context_class">thread</property>
<property name="hibernate.format_sql">true</property>
<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory</property>
<mapping resource="orm_mapping.xml" />
</session-factory>
</hibernate-configuration>
2.编写 entity 持久化类
package com.hibernate.orm;
public class Student {
private int s_Id;
private String s_Name;
private String s_Class;
private int s_Score;
public int getS_Id() {
return s_Id;
}
public void setS_Id(int id) {
s_Id = id;
}
public String getS_Name() {
return s_Name;
}
public void setS_Name(String name) {
s_Name = name;
}
public String getS_Class() {
return s_Class;
}
public void setS_Class(String class1) {
s_Class = class1;
}
public int getS_Score() {
return s_Score;
}
public void setS_Score(int score) {
s_Score = score;
}
3.配置 orm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.hibernate.orm" >
<class name="Student" table="student" >
<id name="s_Id" column="sid" >
<generator class="increment"></generator>
</id>
<property name="s_Name" column="sname" ></property>
<property name="s_Class" column="sclass"></property>
<property name="s_Score" column="sscore"></property>
</class>
</hibernate-mapping>
4.通过 hibernate api 编写访问数据库代码
package com.hibernate.orm;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
import org.junit.Test;
public class TestOrm {
private static Session session;
public synchronized static Session getSession(){
if(session==null){
Configuration conf =new Configuration().configure();
ServiceRegistryBuilder builder = new ServiceRegistryBuilder();
ServiceRegistry serviceRegistry =builder.applySettings(conf.getProperties()).buildServiceRegistry();
SessionFactory sessionFactory = conf.buildSessionFactory(serviceRegistry);
session=sessionFactory.openSession();
}
return session;
}
/**
*
*
* 对象的三种状态
* 1.瞬时态
* 2.持久态
* 3.游离态
*
* session 是应用程序与数据库交互操作的一个单线程对象 ,相当于 jdbc 的connection;
*
* 取得持久对象的方法 get(),load();
* 持久化对象的保存,更新,删除的方法 save(),update(),saveOrUpdate(),delete(),marge();
*
* 管理 session 的方法 isOpen(),flush(),clean(),evict(),close();
*
* 管理事务的 方法 commit(),rollback(),wasCommitted();
*
* hbm2dll.auto 由java 代码生成数据库表 可选用create/update
* 取值如下:create 每次运行覆盖上次的表
* update 如果发现数据库表不一致,会添加指定列,不会删除原始列
* create-drop 在运行时创建 sessionFactory 关闭时删除
* validate 会进行自动校验,列不一致会抛出异常
*
* session 缓存有效减少对数据库访问的频率
*
* hibernate 索引从0 开始
* 入参 ?
* :key
*
* 检索方式
* oid 检索方式 get(),load()
* 导航对象图像 检索方式 持久化对象.getXXX();
* 本地sql createSqlQuery(statement)
* hsq 检索方式 createQuery(statement)
* Qbc 检索方式 createCriteria(statement)
*/
public void add(){
Session session = getSession();
Transaction transact = session.beginTransaction();
Student stu = new Student();
stu.setS_Name("dynamic");
stu.setS_Class("1406");
stu.setS_Score(1);
session.save(stu);
transact.commit();
}
public void update (){
Session session = getSession();
Transaction transact = session.beginTransaction();
Student stu = new Student();
stu.setS_Id(999);
stu.setS_Class("1800");
stu.setS_Name("小王");
stu.setS_Score(20);
session.update(stu);
transact.commit();
}
}