联系我们 - 广告服务
您的当前位置:官网首页 > 资讯 > 热评 >

SSH框架之Hibernate第一篇

来源: 编辑: 时间:2019-09-11
导读: session session = hibernateutils.opensession;transaction tx = session.begintrans......
session session = hibernateutils.opensession; transaction tx = session.begintransaction; //操作 customer ct = session.get; session.delete; tx.commit; session.close; @test // 如果证明咱们使用的连接是从配置好的c3p0里面获取的 public void t5 session session = hibernateutils.opensession; session.dowork { @override //com.mchange.v2.c3p0.impl.newproxyconnection public void execute throws sqlexception { system.out.println.getname); 1.4hibernate的常见配置 1.4.2核心配置文件的配置 ?hibernate的核心配置文件的方式有两种 ?hibernate.properties :不能加载映射文件。必须手动编写代码加载映射文件。 ?hibernate.cfg.xml :结构清晰。 ?hibernate的核心配置文件中的内容: ?数据库连接基本的参数 ?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 !-- session-factory:连接池 session:连接对象 -- !-- 5个必选项 -- property name="hibernate.connection.driver_class" com.mysql.jdbc.driver /property property name="hibernate.connection.url" jdbc:mysql:///hibernate /property property name="hibernate.connection.username" root /property property name="hibernate.connection.password" 1234 /property !-- 配置方言 分页: limit sqlserver:top oracle:sql嵌套 -- !-- 作用:就是让hibernte自动的匹配符合当前数据库的sql语法 -- property name="hibernate.dialect" org.hibernate.dialect.mysqldialect /property !-- 可选的 -- !-- 集成c3p0连接池 -- property name="hibernate.connection.provider_class" org.hibernate.connection.c3p0connectionprovider /property !-- 让控制台输出hibernate生成的sql语句 默认是一行-- property name="hibernate.show_sql" true /property !-- 可以格式化sql语句 -- property name="hibernate.format_sql" true /property !-- 可以让hibernate根据配置好的映射文件自己生成表 -- !-- create: 没有 :hibernate根据映射文件创建对应的表,如果有表:删除再创建 create-drop:没有 :hibernate根据映射文件创建对应的表,如果有表:删除再创建 ,用完就删掉 // 测试数据的时候使用 update: 没有表创建表,有表使用表 validate: 默认的值 hibernate不会创建任何表 property name="hibernate.hbm2ddl.auto" update /property !-- 引入映射文件地址 -- mapping resource="cn/baidu/domain/customer.hbm.xml"/ /session-factory /hibernate-configuration ?hibernate的属性 1.4.3 映射文件配置 映射文件就是将类与表建立映射关系文件,这个文件只要是xml即可.通常名称 : 类名.hbm.xml class标签 : 建立类和表的映射 name : 类的全路径. table : 数据库中表的名称. catalog : 数据库名称 id标签 : 建立主键和类中属性映射 name : 类中的属性的名称 column : 表中的字段名称. property标签 : 建立普通字段与类中属性映射 name : 类中的属性的名称. column : 表中的字段名称. length : 字段的长度 not-null : 非空 unique : 唯一 1.5hibernate的常用api 1.5.1 configuration : 配置对象 用来加载核心配置文件 : hibernate.cfg.xml configuration cfg = new configuration; cfg.configure; 用来加载映射文件: 手动加载 : cfg.addresource; 1.5.2 sessionfactory : session工厂对象 session工厂,是一个线程安全的对象,内容维护hibernate的连接池.一般一个应用只需要创建一次的对象. public class hibernateutils // 加载配置文件 private static configuration con =null; // 连接池 private static sessionfactory factory = null; static con=new configuration; con.configure; factory=con.buildsessionfactory; // 获取sessionfactory public static sessionfactory getsessionfactory return factory; // 获取session public static session opensession return factory.opensession; 1.5.3 session : 连接对象 session 相对于connection ,是线程不安全的,session是hibernate持久化操作的核心api. seralizable save; 保存数据. t get;根据id查询数据 t load;根据id 查询数据 get和load区别: get采用的立即加载 : 程序执行到这行的时候,就会马上发送sql语句进行查询. get方法查询对象的时候返回的是真实对象本身. get方法查询一个找不到的对象的时候输出null. load采用的延迟加载 : 程序执行到这行的时候,不会发送sql语句,真正使用这个对象的时候,才会发送sql语句. load方法查询对象的时候返回的是代理对象. load查询一个找不到的对象的时候返回objectnotfoundexception. //get方法 customer customer = session.get;//马上发送一条sql语句 system.out.println; //load方法 customer customer = session.load;没有马上发送sql语句 system.out.println); transaction.commit; session.close; 修改id为6的客户的信息 public void demo3 { session session = hibernateutils.opensession; transaction transaction = session.begintransaction; //1.直接创建对象,进行修改 customer customer = new customer; customer.setcust_id; customer.setcust_name; session.update; //2.先查询再修改 customer customer = session.get; customer.setcust_name; session.update; transaction.commit; session.cloase; 删除操作: public void demo4 { session session = hibernateutil.opensession; transaction transaction = session.begintransaction; //1.直接创建对象,传入id删除 customer customer = new customer; customer.setcust_id; session.delete; //2.先查询再删除 customer customer = session.get; session.delete; transaction.commit; session.cloae; }

 

责任编辑:

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

网友评论:

在“\templets\demo\comments.htm”原来的内容全部删除,插入第三方评论代码,如果不需要评论功能,删除comments.html里面的内容即可
推荐使用友言、多说、畅言(需备案后使用)等社会化评论插件

Copyright © 2018 凯发vip凯发vip-凯发vip网址-凯发官网 All Rights Reserved Power by DedeCms
本站所有资讯来源于网络 如有侵权请联系QQ:9490489
Top