小配置里的代码:
<?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="cn.happy.entity"> ???<class name="Dog" table="Dog" > ???????<id name="dogid" column="dogid"> ???????????<generator class="native"></generator>//id主键 ?自增 ???????</id> ???????<property name="dogname" column="dogname"></property> ???????<property name="dogage" column="dogage" ></property> ???</class></hibernate-mapping>
实体类:
/** * Created by lgy on 2017/9/18. */public class Dog { ???private String dogname; ???private Integer dogage; ???private Integer dogid; ???public String getDogname() { ???????return dogname; ???} ???public void setDogname(String dogname) { ???????this.dogname = dogname; ???} ???public Integer getDogage() { ???????return dogage; ???} ???public void setDogage(Integer dogage) { ???????this.dogage = dogage; ???} ???public Integer getDogid() { ???????return dogid; ???} ???public void setDogid(Integer dogid) { ???????this.dogid = dogid; ???}}
util:
public class HibernateUntil { ???private static Configuration cfg=new Configuration().configure(); ???private static SessionFactory factory=cfg.buildSessionFactory(); ???//1.方法返回session ?静态成员变量不能直接使用非静态成员 ???//Session依赖于Session工厂,工厂依赖于Configure ???public static Session getSession(){ ???????return factory.openSession(); ???} ???//2.关闭session ???public static void closeSession(){ ???????getSession().close(); ???
大配置:
<?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="connection.driver_class">oracle.jdbc.driver.OracleDriver</property> ???????<!--数据库url--> ???????<property name="connection.url" >jdbc:oracle:thin:@localhost:1521:orcl</property> ???????<!--数据库username--> ???????<property name="connection.username" >test</property> ???????<!--数据库password--> ???????<property name="connection.password" >test</property> ???????<!--hibernate方言--><!--和Spring整合时name属性前S必须加hibernate,单独用hibernate框架时,name属性可以直接用dialect--> ???????<property name="hibernate.dialect" >org.hibernate.dialect.Oracle10gDialect</property> ???????<!--输出所有语句到控制台--> ???????<property name="hirbernate.show_sql" >true</property> ???????<!--在log和console中打印出更新 ??格式化显示sql--> ???????<property name="hibernate.format_sql" >true</property> ???????<!--hbm2ddl就是**.hbm.xml,生成特定数据库的sql ??从程序中自动建表 updata表示如果底层存在表,name更新表结构 --> ???????<property name="hibernate.hbm2ddl.auto" >update</property> ???????<!--指定当前session范围和上下文 ?thread至当前线程用来跟踪管理--> ???????<property name="current_session_context_class" >thread</property> ???????<mapping resource="cn/happy/entity/Dog.hbm.xml" ></mapping> ???</session-factory></hibernate-configuration>
Test测试类:
@Test ???public void testhibernate() { ???????//configuration ???????Configuration cfg=new Configuration().configure(); ???????SessionFactory factory=cfg.buildSessionFactory(); ???????Session session=factory.openSession(); ???????Transaction tx=session.beginTransaction(); ???????Dog dog=new Dog(); ???????dog.setDogname("小白"); ???????session.save(dog); ???????tx.commit(); ???????System.out.println("add ok!"); ???????session.close();
???}
//用get方法查询数据库
@Test
private void findStudent() {
???//02Hibernate 保存
???//读取大配置文件,获取连接的数据库信息
???Configuration cfg=new Configuration().configure();
???//3创建SessionFactory
???SessionFactory factory=cfg.buildSessionFactory();
???//加工session
???Session session=factory.openSession();
???//开启事务
???Transaction tx=session.beginTransaction();
???//5Hibernate
???//根据session的方法做数据操作 ?检索
???Student student=session.get(Student.class,2);
???System.out.println(student.getName());
???//提交事务
???tx.commit();
???//关闭session
???session.close();
???System.out.println("success ?ok");
}
//用load方法查询 ???@Test ???public void update2(){ ???????Configuration cfg=new Configuration().configure(); ???????SessionFactory factory=cfg.buildSessionFactory(); ???????Session session=factory.openSession(); ???????Transaction tx=session.beginTransaction(); ???????Dog dog=session.load(Dog.class,1); ???????System.out.println("load-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-="); ???????System.out.println(dog.getDogname()); ???}
load方法:
无论get方法查询,还是load方法,都要开启事务,也不要手动提交!!!
Hibernate初识
原文地址:http://www.cnblogs.com/s1297-lgy/p/7545708.html