分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

07-hibernate进阶

发布时间:2023-09-06 01:24责任编辑:傅花花关键词:暂无标签

1,hibernate.cfg.xml常用配置

2,session简介

3,transaction简介

4,session详解

5,对象关系映射常用配置

hibernate.cfg.xml常用配置

show_sql:是否把运行时候的sql语句输出到控制台,以便测试。

format_sql:输出到控制台的sql是否排版,便于阅读

hbm2dd.auto;可以帮助java生成数据库脚本,生成具体表结构。create|update|create-drop|validate

default_schema:默认数据库

dialect:配置数据库方言。

session简介

hibernate的执行过程:

Configuration-创建-SessionFactory-创建-Session(类似JDBC中的connecttion,获取了Session,相当于获取了一个连接)--执行-save|delete|update|get

--commit(提交事务)--session.close()(关闭连接)-- 结束

不建议通过JDBC操作数据库,而是session操作。

session可以理解操作数据库的对象。

session与JDBC中的connection,是多对一关系,每个session都有一个与之对应的connection,一个connection不同时刻可以供多个session使用。

把对象保存在关系数据库中要调用session的各种方法,如:save(),update(),delete(),createQuery()等。

transaction简介(事务)

hibernate对数据的操作都是封装在事务中,并且默认是非自动提交的,所以用session保存对象时候,如果不开启事务,并且提交事务,对象并不会真正保存到数据库。

如果你想让hibernate像JDBC那样自动提交事务,必须调用session对象的doWork()方法,获取jdbc的connection后,设置其为自动提交事务(不推荐)

import java.sql.Connection;import java.sql.SQLException;import java.util.Date;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.boot.registry.StandardServiceRegistryBuilder;import org.hibernate.cfg.Configuration;import org.hibernate.jdbc.Work;import org.hibernate.service.ServiceRegistry;import org.junit.After;import org.junit.Before;import org.junit.Test;//测试类public class StudentsTest { ???????private SessionFactory sessionFactory; ???private Session session; ???private Transaction transaction; ???@Before ???public void init() ???{ ???????//创建配置对象 ???????Configuration config=new Configuration().configure(); ???????config.addClass(Students.class);//这个需要加上(视频里面没有) ???????//创建服务注册对象。 ???????ServiceRegistry serviceRegistry=new StandardServiceRegistryBuilder() ???????????????.applySettings(config.getProperties()).build(); //通过config.getProperties()读取配置文档。 ???????//创建会话工厂对象 ???????sessionFactory=config.buildSessionFactory(serviceRegistry); ???????//创建会话对象 ???????session=sessionFactory.openSession(); ???????//开启事务 ???// ???transaction=session.beginTransaction(); ???} ???@After ???public void destory() ???{ ???// ???transaction.commit();//提交事务 ???????session.close();//关闭会话 ???????sessionFactory.close();//关闭会话工厂 ???} ???????@Test ???public void testSaveStudents() ???{ ???????//生成学生对象 ???????Students s=new Students(1,"张三丰","男",new Date(),"武当山");
    //下面使用了匿名函数 ???????session.doWork(new Work() ???????????{ ???????????????@Override ???????????????public void execute(Connection connection) throws SQLException { ???????????????????connection.setAutoCommit(true); ???????????????????????????????????????} ???????????}); ???????session.save(s);//保存对象进入数据库 ???}}

07-hibernate进阶

原文地址:http://www.cnblogs.com/alsf/p/7820379.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved