在ssh环境中配置Hibernate框架
2016-11-12 11:31
295 查看
介绍在SSH环境中,配置Hibernate框架,编写DAO接口,实现数据库操作。
使用XML文件来处理映射Java类别到数据库表格中,不用编写代码
为在数据库中直接存储和检索Java对象提供简单的API,不需要写SQL语句
操控数据库中对象复杂的关联
除了清单以外,还需要配置数据库驱动、连接池以及支持spring的相关jar包
在spring配置文件中配置sessionFactory和数据库链接池的bean组件,sessionFactory的属性定义了对象映射xml文件的位置,在相应的位置新建对象映射xml文件
在相应的位置定义对象映射xml文件,文件定义了从实体类到数据库表字段的对应关系,要定义id作为主键,可以用uuid自动生成,用set定义相应的关联查询,其中key属性是关联查询的条件
编写简单的java语句进行测试
输出结果
下一篇介绍如何基于Hibernate框架编写DAO接口及实现类
0. Why Hibernate?
Hibernate 是传统 Java 对象和数据库服务器之间的桥梁,用来处理基于对象关系映射机制(ORM)和模式的那些对象。Hibernate的优势在于使用XML文件来处理映射Java类别到数据库表格中,不用编写代码
为在数据库中直接存储和检索Java对象提供简单的API,不需要写SQL语句
操控数据库中对象复杂的关联
1. 配置环境
1. 1 准备jar包
添加Hibernate相关jar包,其中有些jar包与spring冲突需要删除(见jar包清单),此外还需要添加spring与Hibernate整合的jar包spring-hibernate3.jar,需要说明的是,spring.jar包含spring-hibernate3.jar的部分,如果配置了spring.jar,就不需要再配置前者了,否则会有冲突,以下是相关jar包清单除了清单以外,还需要配置数据库驱动、连接池以及支持spring的相关jar包
1. 2 配置xml文件
编写Hibernate配置文件,该文件定义了SQL版本(与数据库对应),执行查询时是否显示sql语句等等,注意在无网络链接时可能出现的问题,参考http://www.makaidong.com/IT%E5%8D%9A%E5%AE%A2%E5%9B%AD/11450.shtml<?xml version='1.0' encoding='UTF-8'?> <!-- 解决hibernate无法在无网络情况下运行 http://www.makaidong.com/IT%E5%8D%9A%E5%AE%A2%E5%9B%AD/11450.shtml --> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- 配置Hibernate的基本属性 --> <!-- 1.数据源配置到IOC容器中 --> <!-- 2.关联的.hbm.xml也在IOC容器配置SessionFactory实例 --> <!-- 3.配置Hibernate的基本属性:方言,SQL显示及格式化,生成数据表的策略以及二级缓存 --> <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property> <property name="hibernate.show_sql">true</property> <property name="hbm2ddl.auto">update</property> <property name="format_sql">true</property> </session-factory> </hibernate-configuration>
在spring配置文件中配置sessionFactory和数据库链接池的bean组件,sessionFactory的属性定义了对象映射xml文件的位置,在相应的位置新建对象映射xml文件
<!-- 配置hibernate sessionFactory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="configLocation" value="classpath:hibernate.cfg.xml"></property> <property name="dataSource" ref="dbcpDataSource"></property> <property name="mappingLocations" value="classpath:com/bs_circle/sql/*.hbm.xml"></property> </bean> <bean id="dbcpDataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="username" value="haor"></property> <property name="password" value="*****"></property> <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://localhost:3306/bs_circle?useUnicode=true&characterEncoding=utf8"></property> </bean>
在相应的位置定义对象映射xml文件,文件定义了从实体类到数据库表字段的对应关系,要定义id作为主键,可以用uuid自动生成,用set定义相应的关联查询,其中key属性是关联查询的条件
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.bs_circle.entity.User" table="bs_user"> <id name="bs_user_id" column="bs_user_id" type="string"> <!-- uuid生成器 --> <generator class="uuid"></generator> </id> <property name="bs_user_username" column="bs_user_username" type="string"></property> <property name="bs_user_password" column="bs_user_password" type="string"></property> <property name="bs_user_email" column="bs_user_email" type="string"></property> <property name="bs_user_nickname" column="bs_user_nickname" type="string"></property> <set name="bs_user_roles"> <key column="bs_user_id"></key> <one-to-many class="com.bs_circle.entity.Role"/> </set> </class> </hibernate-mapping>
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.bs_circle.entity.Role" table="bs_role"> <id name="bs_role_id" column="bs_role_id" type="string"> <!-- uuid生成器 --> <generator class="uuid"></generator> </id> <property name="bs_user_id" column="bs_user_id" type="string"></property> <property name="bs_user_role" column="bs_user_role" type="string"></property> </class> </hibernate-mapping>
编写简单的java语句进行测试
package com.bs_circle.test.dao; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.bs_circle.entity.User; public class TestHibernate { public static void main(String[] args) { ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); SessionFactory sf = ac.getBean("sessionFactory",SessionFactory.class); Session session = sf.openSession(); User user = (User) session.get(User.class, "8aea92cf582e24a101582e24a2970001"); System.out.println(user.getBs_user_username()); session.close(); } }
输出结果
Hibernate: select user0_.bs_user_id as bs1_1_0_, user0_.bs_user_username as bs2_1_0_, user0_.bs_user_password as bs3_1_0_, user0_.bs_user_email as bs4_1_0_, user0_.bs_user_nickname as bs5_1_0_ from bs_user user0_ where user0_.bs_user_id=? Demo
下一篇介绍如何基于Hibernate框架编写DAO接口及实现类
相关文章推荐
- 在eclipse下手动配置ssh的环境,Spring,Struts2,Hibernate
- Spring——SSH (Spring+Struts+Hibernate)框架搭建之配置文件序列二
- 使用MyEclipse整合ssh(Struts、Spring、Hibernate)三大框架(环境搭载+实例源码下载)
- Hibernate框架入门之环境配置
- SSH:Hibernate框架(七种关联关系映射及配置详解)
- S2JH新增WIKI页面:开发基础环境配置说明,基于SSH的企业Web应用开发框架
- SSH:Hibernate框架(Hibernate继承关系映射及配置)
- 使用MyEclipse整合ssh(Struts、Spring、Hibernate)三大框架(环境搭载+实例源码下载)
- ssh学习:hibernate环境配置及开发步聚
- SSH:Hibernate框架(Hibernate注解配置)
- Spring beans——SSH (Spring+Struts+Hibernate)框架搭建之配置文件序列三
- SSH:Hibernate框架(关系映射及基本配置)
- Hibernate hbm 外键关联——SSH (Spring+Struts+Hibernate)框架搭建之配置文件序列六
- 使用MyEclipse整合ssh(Struts、Spring、Hibernate)三大框架(环境搭载+实例源码下载)
- 图解SSH(struts2,spring,hibernate)框架配置
- 关于搭建restful web service + springMVC + ibatis/hibernate的整合和XML配置意思和ssh+springMVC框架搭建
- Hibernate——SSH (Spring+Struts+Hibernate)框架搭建之配置文件序列四
- SSH:Hibernate框架(配置文件详解)
- SSH(第四步)—— 单独配置Hibernate框架到web项目
- SSH框架之Hibernate的映射配置