ssh(sturts2_spring_hibernate) 框架搭建之hibernate1
一、hibernate简单了解:
⑴、hibernate一个java领域里面的一个持久化的ORM框架。
持久化:就是对对象的数据修改,hibernate会把修改的数据同步到数据库中。
ORM:Object Relation Mapping 对象关系映射。把数据库中的表映射成java中的一个个对象(POJO),然后hibernate通过对对象的操作来对表进行操作。
⑵、hibernate是对数据数据库的进一步的封装,hibernate的底层还是JDBC。
二、hibernate搭建:
在之前,我们已经搭建好了struts2和spring的环境,现在在这二者的基础之上对数据库进行进一步的封装,也就是在项目中加入hibernate。
⑴、首先,下载hibernate 下载地址:http://hibernate.org/orm/ ,下载完解压后:hibernate-release-5.2.2.Final—>>lib—>>required,找到这个目录中的所有jar包复制到项目中即可。同时在同级目录中有其他的jar可以适当的了解,比如:optional目录中有c3p0的jar,后面数据库连接池需要使用到。
⑵、编写hibernate.cfg.xml文件:
①、在你的项目src目录下添加一个hibernate.cfg.xml文件,文件名可以任意,但需是XXX.cfg.xml类型。
②、声明dtd:(根据你下载的版本来确定dtd。)
<!DOCTYPE hibernate-configuration
PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
③、具体编写hibernate.configuration
<hibernate-configuration> <!--设置sessionFactory-->
<session-factory>
<!-- 配置相关的数据库基本信息 -->
<!-- 数据库驱动 -->
<property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
<!-- 数据库访问路径 -->
<property name="connection.url">jdbc:sqlserver://localhost:1433;DatabaseName = webLastExam_20160727</property>
<!-- 登录用户名 -->
<property name="connection.username">sa</property>
<!-- 登录密码 -->
<property name="connection.password">password</property> <!-- 配置hibernate的基本信息 -->
<!-- 配置hibernate使用的数据库方言 -->
<property name="dialect">org.hibernate.dialect.SQLServer2008Dialect</property>
<!-- 设置数据库连接池的大小 -->
<property name="connection.pool_size">5</property>
<!-- 执行操作时候是否在控制台打印sql语句 -->
<property name="show_sql">true</property> <!-- 是否进行格式化sql语句,指的是在控制台中输出的sql语句是否换行 -->
<property name="format_sql">true</property> <!--生成数据表的策略-->
<property name="hbm2ddl.auto">update</property> <!-- 设置hibernate的映射文件 -->
<mapping resource="entity/BookCard.hbm.xml"/>
</session-factory>
</hibernate-configuration>
·这里配置的session-Factory中的数据库信息本来实在util.MyConnectionImp中定义的,如果在util.MyConnectionImp定义好数据的信息,那么用户的数据库一切换就要修改这里的代码,所以需要把这个获取连接的事情交给hibernate去管理,这样就避免了直接修改代码,只要修改配置文件即可。
·这里需要设置的属性有:
数据库驱动、数据库访问路径、用户名、密码、数据库方言、连接池大小、hibernate的映射文件(后面会讲)等。
其中 <property name="hbm2ddl.auto">update</property> 这个属性如果设置为create,那么之前的数据库中的数据在电脑开机之后删除。
⑶、编写hibernate的映射文件- entityName.hbm.xml :
①、声明dtd:根据你下载的版本来确定dtd。)
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
②、编写hibernate-mapping
<hibernate-mapping> <class name="entity_name" table="tabel_name"> <id name="entity_prop_name" type="integer" >
<column name="column_name"></column>
<generator class="native" />
</id>
<property name="entity_prop_name" type="string">
<column name="column_name"></column>
</property> </class>
</hibernate-mapping>
·其中,class标签中的name属性值对应需要映射的实体类的名字,并且是 "包名.类名" 形式。table属性则是需要通过映射这个实体类到数据库中的表名。
·其次,id标签设置的是数据库表中的主键,name属性对应实体类中需要做主键的成员变量名,type属性是这个成员变量的数据类型,而且这个类型是hibernate映射类型,具体参考映射对照表,column标签中的name顾名思义就是表中的名字了。generator标签中的class属性设置为native,则是为根据不同的底层数据库采用不同的主键生成方式。由于Hibernate会根据底层数据库采用不同的映射方式,因此便于程序移植,项目中如果用到多个数据库时,可以使用这种方式。
⑷、在dao中进行sessionFactory的最后配置:
①、获取SessionFactory
一种是手动new出一个Configuration抽象工厂,然后用这个抽象工工厂创建SessionFactory。这种需要hibernate的XXX.cfg.xml配置,也就是现在我们讲的这种。另外一种是使用spring的bean来new一个SessionFactory,然后注入到dao定义的成员变量SessionFactory中。现在我们先演示第一种:
Ⅰ、获取SessionFactory:如果下面的configure()方法不传入参数那么就默认是hibernate.cfg.xml文件。
<!--获取SessionFactory-->
SessionFactory sessionFactory = new Configuration().configure("mySQLHibernate.cfg.xml").buildSessionFactory(); <!--获取Session对象-->
Session session = sessionFactory.openSession();
Ⅱ、下面就可执行curd操作啦,示例一个查询表中所有数据
<!--查询表中所有数据-->
Query query = session.createQuery("from BookCard"); <!--把查询出来的数据放到集合中-->
List<BookCard> list = query.getResultList();
讲解结束,谢谢浏览!
最新文章
- VMware ESXi客户端连接控制台时提示";VMRC控制台连接已断开...正在尝试重新连接";的解决方法
- JS读写cookie以及中文乱码解决
- composer安装fxp插件时候提示内存不足且没有交换空间的解决办法
- 安卓第十四天笔记-内容提供者(ContentProvider)
- Android网络:HTTP之利用HttpURLConnection访问网页、获取网络图片实例 (附源码)
- 转:1.1 cdev_init cdev_alloc 使用说明
- Oracle字符串分割函数
- Biztalk2010安装及配置问题集
- Oracle语句优化规则(一)
- 基于QT的异质链表实例
- 链表回文判断(C++)
- python+pycahrm+windows环境准备
- Python之旅_第一章Python入门
- YML(1)什么是 YML
- linux 文本编辑 软件管理
- 12_jvm性能优化专题1——top命令和jstack联合定位
- Java简单工厂模式(SimpleFactoryMode)
- flask config
- django 认证模块auth,表单组件form
- Office DDE漏洞学习笔记
热门文章
- 黑马程序员_Java基础:IO流总结
- Mini projects #3 ---- Stopwatch: The Game
- PSP&;进度条
- Linux内核分析之可执行程序的装载和启动
- 个人网页的留言板实现与sae的数据库账户配置
- 详细!交叉编译时 note: the mangling of &#39;va_list&#39; has changed in GCC 4.4解决办法
- cocos2d-x项目实现android视频播放参考链接
- [原] XAF 添加日期筛选下拉选择
- 多语言配置--LogisticsPlatform物流平台系统
- 使用VirtualBox自带管理工具命令为虚拟磁盘扩展空间