<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Generated 2014-4-30 15:39:33 by Hibernate Tools 3.4.0.CR1 --> <hibernate-mapping> <class name="com.hibernate.User"> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="password"/> <property name="createTime"/> <property name="expireTime"/> </class> </hibernate-mapping>
<?xml version="1.0" encoding="UTF-8"?> <!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.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_session</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">ab12</property> <!-- dialect:方言,封装的底层API,类似于Runtime,将数据库转换为配置中的相应的语言 --> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <mapping resource="com/hibernate/User.hbm.xml"/> </session-factory> </hibernate-configuration>
package com.hibernate;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class session {
private static SessionFactory factory; //声明静态局部变量SessionFactory,数据库镜像
static{
try{
//创建并获取配置数据库的配置文件,默认获取hibernate.cfg.xml
Configuration cfg=new Configuration().configure();
factory=cfg.buildSessionFactory(); //构建一个数据库镜像
}catch(Exception e){
e.printStackTrace(); //打印错误信息
}
}
public static Session getSession(){
return factory.openSession(); //返回创建的session对象
}
public static SessionFactory getSessionFactory(){
return factory; //返回相应的SessionFactory
}
//关闭session对象
public static void closeSession(Session session){
if(session != null){
if(session.isOpen()){
session.close();
}
}
}
}
package com.hibernate;
import java.util.Date;
import junit.framework.TestCase;
import org.hibernate.Session;
import org.hibernate.Transaction;
public class SessionTest extends TestCase {
}
public void testGet1(){
Session session=null;
Transaction tx = null;
try{
session=HibernateUtils.getSession();
//开启事务
tx= session.beginTransaction();
//get加载上来的对象为持久对象
//执行get会马上发出查询语句,如果不存在会返回null
User user=(User)session.get(User.class,"ff80808145bc28cc0145bc28ce020002");
System.out.println(user.getName());
//persistent状态
//persistent状态的对象,当对象的属性发生改变的时候
//Hibernate在清理缓存(脏数据检查)的时候,会和数据库同步
user.setName("赵柳");
session.getTransaction().commit();
}catch(Exception e){
e.printStackTrace();
if(tx != null){
tx.rollback();
}
}finally{
HibernateUtils.closeSession(session);
}
}
public void testLoad1(){
Session session=null;
try{
session=HibernateUtils.getSession();
//不会马上查询语句,因为load支持lazy(延迟加载/懒加载)
//什么教lazy?只有真正使用这个对象的时候,再创建,对于Hibernate来说
//才真正发出查询语句,主要为了提高性能,lazy是Hibernate中非常重要的特性
//Hibernate的lazy是如何实现的?采用代理对象实现,代理对象主要采用的是CGLIB库生成的
//而不是JDK的动态代理,因为JDK的动态代理只能对实现了借口的类生成代理,CGLIB可以对类生成
//代理,它采用的是继承方式
User user=(User)session.load(User.class,"8a1b653745bcc7b50145bcc7b7140001");
System.out.println(user.getName());
//persistent状态
//persistent状态的对象,当对象的属性发生改变的时候
//Hibernate在清理缓存(脏数据检查)的时候,会和数据库同步
user.setName("zhaoliu");
session.getTransaction().commit();
}catch(Exception e){
e.printStackTrace();
}finally{
HibernateUtils.closeSession(session);
}
}
public void testUer(){
Session session=null;
try{
session=HibernateUtils.getSession();
session.beginTransaction();
//手动构造detached对象
User user=new User();
user.setId("8a1b653745bcc7b50145bcc7b7140001");
//persistent状态
//persistent状态的对象,当对象的属性发生改变的时候
//Hibernate在清理缓存(脏数据检查)的时候,会和数据库同步
session.getTransaction().commit();
}catch(Exception e){
e.printStackTrace();
}finally{
HibernateUtils.closeSession(session);
}
}
session=HibernateUtils.getSession(); session.beginTransaction(); User user=(User)session.load(User.class,"8a1b653745bcc6d50145bcc6d67a0001"); //建议采用此种方式删除,先加载再删除 session.delete(user);
//获取session对象
session=HibernateUtils.getSession();
//开启事务
session.beginTransaction();
//或者可以使用另外的方法开启
//session.getTransaction().begin();
//加载获取User对象
//方法一:使用load方法
//User user=(User)session.load(User.class, "8a1b653745bcc7b50145bcc7b7140001");
//方法二:手动获取
User user=new User();
user.setId("8a1b653745bcc7b50145bcc7b7140001");
//更新姓名
user.setName("zhangsan");
session.update(user);
session.getTransaction().commit();
//获取session对象
session=HibernateUtils.getSession();
//开启事务
session.beginTransaction();
//或者可以使用另外的方法开启
//session.getTransaction().begin();
//手动获取
User user=new User();
user.setId("8a1b653745bcc7b50145bcc7b7140001");
//更新姓名
user.setName("zhangsan");
session.update(user);
session.getTransaction().commit();
查看更新结果:
[img]http://files.jb51.net/file_images/article/201607/20167691051283.png?20166691059[/img]
分析更新结果,它其实更新了数据库的整行数据,这种更新操作有太多的不确定因素,不建议使用。
public void testSave2(){
Session session=null;
Transaction tx = null;
try{
session=HibernateUtils.getSession();
//开启事务
tx= session.beginTransaction();
//Transient状态
User user=new User();
user.setName("zhangsi");
user.setPassword("123");
user.setCreateTime(new Date());
user.setExpireTime(new Date());
//persistent状态
//persistent状态的对象,当对象的属性发生改变的时候
//Hibernate在清理缓存(脏数据检查)的时候,会和数据库同步
session.save(user);
user.setName("lisi");
tx.commit();
}catch(Exception e){
e.printStackTrace();
if(tx != null){
tx.rollback();
}
}finally{
HibernateUtils.closeSession(session);
}
//detached状态
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有