hibernate的映射关系配置及对会话工厂的初始化。以及struts2写实例查询
1.首先获取hibernate的jar导入,不写。
2.hibernate关键配置映射文件有两个,关键工具一个
分别是:
核心配置 hibernate.cfg.xml
持久化类对象与数据库映射配置*.hbm.xml
hibernate会话工厂初始化,会话管理工具
核心配置文件hibernate.cfg.xml `配置,在src目录
<?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="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><!-- 数据库url --><property name="hibernate.connection.url">jdbc:mysql://localhost:3306/studentinfo</property><!-- 数据库连接用户名 --><property name="hibernate.connection.username">root</property><!-- 数据库连接密码 --><property name="hibernate.connection.password">123456</property><!-- 数据库方言 --><property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property><!-- 把hibernate执行sql语句打印到控制台 开发完成就false,我一直奇怪sql哪来的,怪我,日志则不一定--><property name="hibernate.show_sql">true</property><!-- 把生成的sql格式化一下,方便阅读 --><property name="hibernate.format_sql">true</property><!-- *.hbm.xml映射文件 --><mapping resource="model/stuinfo/StudentInfo.hbm.xml" /></session-factory>
</hibernate-configuration>
hibernate会话工厂初始化,会话管理工具类编写:
package com.hibernateInit;import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;public class HbInit {/*** @author joker hibernate 的初始化工具*/private static SessionFactory factory = null;// 会话工厂private static final ThreadLocal<Session> sessionl = new ThreadLocal<Session>();//会话集合public static ThreadLocal<Session> getSessionL() {return sessionl;}// 静态代码块static {try {// 加载hibernateConfiguration configuration = new Configuration().configure();// Configurationfactory = configuration.buildSessionFactory();} catch (HibernateException e) {// TODO 自动生成的 catch 块}}// 获取Sessionpublic static Session getSession() throws Exception {Session session =(Session)sessionl.get();if (session == null || !session.isOpen()) {if(factory==null) {//只建立一次,不空继续rebuildSessionFactory();}//此处补上session=(factory==null)?null:factory.openSession();sessionl.set(session);}return session;}// 重新加载hibernatepublic static void rebuildSessionFactory() {try {// 加载hibernateConfiguration configuration = new Configuration().configure();factory = configuration.buildSessionFactory();} catch (HibernateException e) {// TODO 自动生成的 catch 块}}// 获取SessionFactorypublic static SessionFactory getFactory() {return factory;}// 关闭Sessionpublic static void closeSession() throws Exception {Session session = (Session) sessionl.get();sessionl.set(null);if (session != null) {session.close();}}}
现在编写实例
首先是学生信息持久化类:
package model.stuinfo;public class StudentInfo {/*** @author joker * @param 学生信息库持久化类*/private Integer sno;public Integer getSno() {return sno;}public void setSno(Integer sno) {this.sno = sno;}public String getSname() {return sname;}public void setSname(String sname) {this.sname = sname;}public String getSsex() {return ssex;}public void setSsex(String ssex) {this.ssex = ssex;}private String sname;private String ssex;private String scomputer_g;public String getScomputer_g() {return scomputer_g;}public void setScomputer_g(String scomputer_g) {this.scomputer_g = scomputer_g;}// 持久化的无参构造public StudentInfo() {}}
紧接着配置StudentInfo.hbm.xml持久化类的映射文件。{type为持久化类的类型,column为数据库字段名}
首先在核心配置文件的持久化类源配置。
然后
<?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 ><!-- 学生信息库studentinfo --><class name="model.stuinfo.StudentInfo" table="info"><id name="sno" column="sno" type="java.lang.Integer" ><generator class="native"></generator></id><property name="sname" not-null="true" type="java.lang.String"><column name="sname"></column></property><property name="ssex" not-null="true" type="java.lang.String"><column name="ssex"></column></property><property name="scomputer_g" not-null="true" type="java.lang.String"><column name="scomputer_g"></column></property></class></hibernate-mapping>
然后是调用查询类获取动态的要查询的ID,用到了hibernate工具类下降此类调用selectInfo()可将结果对象返回到controller,struts2层
package hb.model.op;import org.hibernate.Session;import com.hibernateInit.HbInit;import model.stuinfo.StudentInfo;public class SelectStuInfo {/*** @author joker* * @param hb_select_studentinfo* */private String ID;// 持久化对象IDpublic SelectStuInfo(String ID) {this.ID = ID;}// 返回持久化对象public StudentInfo selectInfo() {// TODO 自动生成的方法存根Session session = null;// 持久化对象StudentInfo studentInfo = null;try {session = HbInit.getSession();// get方法(持久类,持久化对象都有唯一标识),立即查询;load延迟装载//此处get合理,studentInfo = session.get(StudentInfo.class, new Integer(ID));HbInit.closeSession();} catch (Exception e) {// TODO 自动生成的 catch 块}// 返回查询结果return studentInfo;}}
hibernate的映射关系配置及对会话工厂的初始化。以及struts2写实例查询相关推荐
- Hibernate api 之常见的类(配置类,会话工厂类,会话类)
1:Configuration :配置管理类对象 1.1:config.configure(): 加载主配置文件的方法(hibernate.cfg.xml) ,默认加载src/hibernate.cf ...
- 【Hibernate】映射关系总结
在hibernate中,由于是对对象进行操作,但是要实现表与表之间的关系,是怎么样实现的呢? 一.Hibernate的映射 Hibernate是对对象进行操作,Hibernate的映射是描述数据库表的 ...
- hibernate中*.hbm.xml配置文件的各种映射关系配置方法(多对一,多对多)
多对一: 多个用户对应一个部门,是多对一的关系,要在多方配,即在用户的hbm.xml文件中配 <many-to-one name="department" class=&qu ...
- Hibernate多对多关系配置
需求:一个用户可以有多个角色,一个角色也可以被多个用户选择 POJO: public class User {private Long user_id;private String user_code ...
- hibernate映射关系的配置
XML文件个人书写规范 <!-- users属性,本类与User的一对多关系 --> 格式:?属性,本类与?的? ?1 属性名 ?2 关联对类型 ?3 ...
- Hibernate映射关系总结篇
又从头学习了一遍hibernate的映射关系,每一次都会有新的收获,总是感觉自己还是不会hibernate.单从配置上说:知其然不知其所以然,马上就要找工作的人了,很是为自己担心呀!! 众所周知,hi ...
- Hibernate实体映射配置1(java@注解方式)
实体和数据库之间存在某种映射关系,hibernate根据这种映射关系完成数据的存取.在程序中这种映射关系由映射文件(*.hbm.xml)或者java注解(@)定义. 本文以java注解的形式总结映射关 ...
- 总结xml配置spring-aop声明式事务配置与hibernate报错:** isno active spring和hibernate整合,原因会话工厂去路(到spring不仅仅是bean)错误
spring事务管理太厉害了!!可以不再自管事务开发了! spring aop声明式事务配置 问题: 困扰我近十多天的的spring事务管理终于解决了, 再也不用自己管理事务了 嗯,可以删该死的hib ...
- 5.1.3 配置主机名和IP地址的映射关系
5.1.3 配置主机名和IP地址的映射关系 在CentOS 6.8服务器中,主机名和IP地址的映射关系可以在/etc/hosts文件中进行配置.这里可以通过vim编辑器对/etc/hosts文件进行编 ...
最新文章
- 手把手教你用线性回归预测二手房房价
- spring applicationContext.xml最全约束
- 使用Xftp连接树莓派并传输文件
- spring cloud 定时任务
- canal数据同步(开启binlog功能)
- Python中float(‘inf‘)代表什么意思?
- CSS+DIV-设置表格与表单
- pta通讯录排序用python实现,python实现将android手机通讯录vcf文件转化为csv
- java redis 流水线,Redis系列(1) —— 流水线
- 虚拟主机不支持mysql_虚拟主机能用mysql么
- tensorflow 在加载大型的embedding模型参数时,会遇到cannot be larger than 2GB
- C++--第17课 - 继承与多态 - 上
- Rust: trim(),trim_matches()等江南六怪......
- 离线下载Express 2015 for Windows 10
- 如何升级更新你的黑莓手机OS系统
- BP神经网络算法 原理讲解以及底层代码复现
- 东芝笔记本linux系统安装驱动,东芝Windows系统如何手动安装驱动程序
- EasyRecovery2022真正不收费的数据恢复软件
- 基于云效Codeup一键恢复删库保护数据资源,程序员删库跑路不复存在
- win10计算机休眠设置在哪里,win10怎么让屏幕一直亮着 win10设置休眠时间详细教程...
热门文章
- 20181120-1 每周例行报告
- hdu 2586(LCA的离线做法)
- bash: /opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/bin/arm-hisiv300-linux-gcc: 没有那个文件或目录。...
- 定制kali linux
- Knockoutjs 实践入门 (2) 绑定事件
- win系统注册缺少的库 32位系统 64位系统
- [网络安全提高篇] 一〇五.SQL注入之揭秘Oracle数据库注入漏洞和致命问题(联合Cream老师)
- App设计灵感之十二组精美的手机闹钟App设计案例
- python正则表达式函数match()和search()的区别详解
- 大数据互联网架构阶段 数据库三范式与反范式