文章标题
来源:互联网 发布:手机淘宝怎么看评论 编辑:程序博客网 时间:2024/05/21 01:55
Hibernate 学习笔记
Hibernate :面向持久层的框架
hibernate环境搭建:
1.导入hibernate jar 包,sql 驱动 jar 包
2.创建配置文件 hibernate(xml)
3.创建实体类,与数据库对应
4.实体关系映射文件(多表关联体现比较明显)
5.调用Hibernate API访问数据库,实现增删改查功能
save()–insert into :实体关系映射文件+配置文件完成封装
6.配置文件 hibernate.cfg.xml
dtd 约束
<hibernate-configuration><session-factory><--!配置连接数据库信息--><property name="connection.username">root</property><property name="connection.password">root</property><property name="connection.driver_class">com.mysql.jdbc.Driver</property><property name="connection.url">jdbc:mysql://localhost:3306/*</property><!-- Hibernate基本配置 --><!-- 配置Hibernate数据库方言 --><property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property><--!是否打印sql语句--><property name="show_sql">true</property> <--!是否自动生成数据库表--> <property name="hbm2ddl.auto">update</property> <--!--> <!-- 是否对 SQL 进行格式化 --> <property name="format_sql">true</property> <mapping resource="hbm/User.hbm.xml" /></session-factory></hibernate-configuration>
7.配置实体关系映射文件
注:表名和实体类名相同(在classname.hbm.xml中配置)
<hibernate-mapping><class name="class-name " table="table-name"><--!primary key--><id name="id_name" type="java.lang.Integer"><column name="id_name"> </column><generator class="native"></generator><--!属性(property)--><property ><!-- 实体关系映射文件 --> <mapping resource="com/hzit/entity/News.hbm.xml"/> </session-factor</hibernate-mapping>
8使用Hibernate 访问数据库
1)创建sessionFactory 对象
SessionFactory sessionFactory = null;
2)创建 Configuration 对象:解析Hibernate.cfg.xml 以及实体关系映射‘
//无参构造函数,解析hibernate.cfg.xml,也可以调用有参构造,指定解析的xml文件
Configuratiuon configuration = new Configuration ().configure();
3)创建 serviceFactory 对象:hibernate 基本配置 和服务都需要在该对象中进行注册才能生效
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettinggs(configuration.getProperties()).buildServiceRegistry();
4)创建 session对象
注:HttpSession与Hibernate中session不一样,区别见下面
Session session = sessionFactory.openSession();
5)创建事物
Transaction transction = session.beginTransction();
set对象的属性
……
6)调用 hibernate API完成保存操作
session.save(“对象”);
//提交事务
transction.commit();
7)关闭资源
session.close();sessionFactory.close();
注:javax.servlet.http.HttpSession是一个抽象接口
它的产生:J2EE的Web程序在运行的时候,会给每一个新的访问者建立一个HttpSession,这个Session是用户身份的唯一表示。注意,是容器(Tomcat,Resin)自动创建的。
用途:存放这个用户的一些经常被用到的信息,例如:用户名,权限。例如在购物车程序里,存放用户买的商品。
销毁:一定时间(跟容器有关)内,用户无任何动作,session自动销毁。
得到的方法:
HttpSession session = request.getSession();
常用方法setAttribute
session.setAttribute(key,value);
这样在另一个jsp或者Servlet里,可以用
session.getAttribute(key);
得到value
类似一个Map
二、org.hibernate.Session
它是hibernate操作数据库的一个句柄对象。它跟上面那个Session唯一的相似处就是名字有点像,其他没任何一样的地方。
一般的Hibernate程序中,Session由用户手动获取,手动关闭。
正规项目中,在业务层获取Session
Session session = HibernateSessionFactory.openSession();
然后把此session传给dao层,将数据持久化或其他的操作。
一次业务逻辑可能调用多个dao方法,例如银行转帐,是一个先减后增的过程,所以会调用2个dao里的方法(甲帐户减,乙帐户增)。因此,可以利用业务层产生的同一个Session来做这件事
- 文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题 文章标题 文章标题 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 检验的要求
- spring技术内幕笔记:XMLBeanFactory
- 输出空心的菱形
- jhat使用
- 【NOIP2012提高组D2T3】【洛谷P1081】开车旅行
- 文章标题
- nginx中ngx_http_access_module做访问控制
- Linux系统上各种软件安装 卸载
- Web App之记账本
- 用户评论实体识别及情感分类
- 基于maven整合spring和redis
- 暑假测试 Day 3
- JavaWeb学习总结(二十五)——jsp简单标签开发(一)
- 2015湖南省赛 CSU 1781: 阶乘除法 (水)