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写实例查询相关推荐

  1. Hibernate api 之常见的类(配置类,会话工厂类,会话类)

    1:Configuration :配置管理类对象 1.1:config.configure(): 加载主配置文件的方法(hibernate.cfg.xml) ,默认加载src/hibernate.cf ...

  2. 【Hibernate】映射关系总结

    在hibernate中,由于是对对象进行操作,但是要实现表与表之间的关系,是怎么样实现的呢? 一.Hibernate的映射 Hibernate是对对象进行操作,Hibernate的映射是描述数据库表的 ...

  3. hibernate中*.hbm.xml配置文件的各种映射关系配置方法(多对一,多对多)

    多对一: 多个用户对应一个部门,是多对一的关系,要在多方配,即在用户的hbm.xml文件中配 <many-to-one name="department" class=&qu ...

  4. Hibernate多对多关系配置

    需求:一个用户可以有多个角色,一个角色也可以被多个用户选择 POJO: public class User {private Long user_id;private String user_code ...

  5. hibernate映射关系的配置

    XML文件个人书写规范 <!-- users属性,本类与User的一对多关系 --> 格式:?属性,本类与?的?       ?1 属性名       ?2 关联对类型       ?3 ...

  6. Hibernate映射关系总结篇

    又从头学习了一遍hibernate的映射关系,每一次都会有新的收获,总是感觉自己还是不会hibernate.单从配置上说:知其然不知其所以然,马上就要找工作的人了,很是为自己担心呀!! 众所周知,hi ...

  7. Hibernate实体映射配置1(java@注解方式)

    实体和数据库之间存在某种映射关系,hibernate根据这种映射关系完成数据的存取.在程序中这种映射关系由映射文件(*.hbm.xml)或者java注解(@)定义. 本文以java注解的形式总结映射关 ...

  8. 总结xml配置spring-aop声明式事务配置与hibernate报错:** isno active spring和hibernate整合,原因会话工厂去路(到spring不仅仅是bean)错误

    spring事务管理太厉害了!!可以不再自管事务开发了! spring aop声明式事务配置 问题: 困扰我近十多天的的spring事务管理终于解决了, 再也不用自己管理事务了 嗯,可以删该死的hib ...

  9. 5.1.3 配置主机名和IP地址的映射关系

    5.1.3 配置主机名和IP地址的映射关系 在CentOS 6.8服务器中,主机名和IP地址的映射关系可以在/etc/hosts文件中进行配置.这里可以通过vim编辑器对/etc/hosts文件进行编 ...

最新文章

  1. 手把手教你用线性回归预测二手房房价
  2. spring applicationContext.xml最全约束
  3. 使用Xftp连接树莓派并传输文件
  4. spring cloud 定时任务
  5. canal数据同步(开启binlog功能)
  6. Python中float(‘inf‘)代表什么意思?
  7. CSS+DIV-设置表格与表单
  8. pta通讯录排序用python实现,python实现将android手机通讯录vcf文件转化为csv
  9. java redis 流水线,Redis系列(1) —— 流水线
  10. 虚拟主机不支持mysql_虚拟主机能用mysql么
  11. tensorflow 在加载大型的embedding模型参数时,会遇到cannot be larger than 2GB
  12. C++--第17课 - 继承与多态 - 上
  13. Rust: trim(),trim_matches()等江南六怪......
  14. 离线下载Express 2015 for Windows 10
  15. 如何升级更新你的黑莓手机OS系统
  16. BP神经网络算法 原理讲解以及底层代码复现
  17. 东芝笔记本linux系统安装驱动,东芝Windows系统如何手动安装驱动程序
  18. EasyRecovery2022真正不收费的数据恢复软件
  19. 基于云效Codeup一键恢复删库保护数据资源,程序员删库跑路不复存在
  20. win10计算机休眠设置在哪里,win10怎么让屏幕一直亮着 win10设置休眠时间详细教程...

热门文章

  1. 20181120-1 每周例行报告
  2. hdu 2586(LCA的离线做法)
  3. bash: /opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/bin/arm-hisiv300-linux-gcc: 没有那个文件或目录。...
  4. 定制kali linux
  5. Knockoutjs 实践入门 (2) 绑定事件
  6. win系统注册缺少的库 32位系统 64位系统
  7. [网络安全提高篇] 一〇五.SQL注入之揭秘Oracle数据库注入漏洞和致命问题(联合Cream老师)
  8. App设计灵感之十二组精美的手机闹钟App设计案例
  9. python正则表达式函数match()和search()的区别详解
  10. 大数据互联网架构阶段 数据库三范式与反范式