`
gaosililn
  • 浏览: 70124 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

ssh学习:hibernate环境配置及开发步聚

 
阅读更多

hibernate的开发环境配置以及开发步聚

一、开发环境配置:

1.下载:hibernate下载地址

2.配置:将hibernate-release-5.0.6.Final\lib\required下的jar包全部复制到项目的lib文件目录下并将数据库的jar包一起复制进去。将hibernate-release-5.0.6.Final\project\etc下的hibernate.cfg.xml、log4j.properties文件复制到src目录下面

二、开发步聚:

1.新建一个JavaBean类,并对属性实现get/set方法。

2.配置编写Xxx.hbm.xml文件

3.配置hibernate.cfg.xml文件

简单的实例:

bean类:

public class User implements Serializable {
	public int id;
	public String name;
	public int age;
//还有get/set方法
}

 Xxx.hbm.xml文件

<?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>
	<!-- name为对应的实体类 table为数据库的表名 -->
	<class name="com.usc.geowind.lilin.bean.User" table="user">
		<id name="id" column="id">
			<!-- 自增 -->
			<generator class="native"></generator>
		</id>
		<!-- name值为bean的属性,column为数据库的字段 -->
		<property name="name" column="name"></property>
		<property name="age" column="age"></property>
	</class>
</hibernate-mapping>

 hibernate.cfg.xml文件的配置:

<!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>
		<!--配置mysql数据库连接参数 -->
		<!-- 指定数据库的方言 -->
		<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
		<!-- 指定数据库所用的驱动 -->
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<!-- 指定链接的数据库的url test为数据库的名字 -->
		<property name="hibernate.connection.url">jdbc:mysql:///test</property>
		<!-- 用户名 -->
		<property name="hibernate.connection.username">root</property>
		<!-- 密码 -->
		<property name="hibernate.connection.password">mysql</property>
		<!-- 根据需求自动创建数据库表 -->
		<property name="hbm2ddl.auto">update|create</property>
		<!-- 罗列所需的影射文件 -->
		<mapping resource="com/usc/geowind/lilin/bean/User.hbm.xml" />
		<!-- c3p0配置 -->
		<!-- 配置C3P0连接池属性 -->
		<!-- 此句必须加,很重要 不添加无法使用c3p0 -->
		<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
		<!-- 设置连接池的最大数量 -->
		<property name="hibernate.c3p0.max_size">10</property>
		<!-- 设置连接池的最小数量 -->
		<property name="hibernate.c3p0.min_size">5</property>
		<!-- 设置连接池链接数据库的时限 -->
		<property name="hibernate.c3p0.timeout">5000</property>
		<property name="hibernate.c3p0.max_statements">10</property>
	</session-factory>

</hibernate-configuration>

 这样就能简单的流程也能顺利的运行期=起来了。

简单的单元测试所实现的链接测试:

 @Test
	 public void createTable() {
	 Configuration configuration = new Configuration().configure();
	 SchemaExport schemaExport = new SchemaExport(configuration);
	 // 前一Boolean是表示是否打印在控制台
	 // 后一Boolean是表示是否删掉之前的重建表
	 schemaExport.create(true, true);
	 }

	@SuppressWarnings("deprecation")
	@Test
	public void add() {
		// 实例化Configuration对象
		Configuration configuration = new Configuration()
				// 默认加载.hibernate.cfg.xml文件
				.configure();
		// 通过configuration对象直接创建buildSessionFactory对象实例,但不提倡使用
		// SessionFactory buildSessionFactory =
		// configuration.buildSessionFactory();
		// 通过StandardServiceRegistryBuilder创建SessionFactory实例对象
		StandardServiceRegistryBuilder ssrb = new StandardServiceRegistryBuilder()
				.applySettings(configuration.getProperties());
		ServiceRegistry build = ssrb.build();
		// 创建SessionFactory对象
		SessionFactory sessionFactory = configuration.buildSessionFactory(build);
		// SessionFactory打开并回去session对象实例
		Session session = sessionFactory.openSession();
		// 开启事务
		Transaction beginTransaction = session.beginTransaction();
		// 封装数据
		User user = new User();
		user.setAge(22);
		user.setName("gaosi");

		try {
			// 保存数据
			session.save(user);
			// 提交事务
			beginTransaction.commit();
		} catch (Exception e) {
			// 事务回滚
			beginTransaction.rollback();
		} finally {
			// 关闭并释放session资源
			session.close();
		}
	}
	

 线程绑定session:

通过getCurrentSession方法获取session对象,openSession方法获取对象比较:

前这方法获得的session对象:是根据当前线程去动态获取现有的session对象,而后者则是新建session对象;前者在事务提交活着回滚时候自动关闭,后者则要手动关闭,否则会连接池溢出。

1.在Hibernate.cfg.xml中添加属性:

<!-- 配置session绑定到当前线程上 -->
<!--本地事务-->
	<property name="hibernate.current_session_context_class">thread</property>
<!--全局事务-->
	<property name="hibernate.current_session_context_class">jba</property>

 

2.获取session对象:

//通过getCurrentSession方法获取session对象
	sessionFactory.getCurrentSession();

 

分享到:
评论

相关推荐

    使用Struts+Spring+Hibernate整合开发例子

    (内附有文档解说开发步骤,此例子是可以跑通的) 环境:jdk5.0 eclipse3.2 struts1.1 spring1.2 hibernate3.1 mysql5.0 1. 新建一个starssh的web工程 2. 添加struts框架包。 3. 添加spring框架包。注意spring的...

    SSH整合步骤

    此压缩包包含四个文档,SSH登录,SSH整合,SSH整合的具体步骤,开发环境的搭建和配置。Struts2, Hibernate和Spring所需版本以及它们的下载地址。

    基于SSH2+Maven+EasyUI+MySQL技术实战开发易买网电子商务交易平台

    现在几乎只要软件开发项目,越来越多的公司采用富客户端技术,由于extjs过于宠大,及学习成本较高,更多的企业选择采用小巧而易用的jeasyui作为前端展示框架。 Maven是基于项目对象模型(POM),可以通过一小段描述...

    SSH环境搭建

    最基本的环境配置,有全面的jar包和配置文件,没有任何多余的东西,开发工具MyEclipse7.0,直接导入即可部署运行,struts 2.2.3.1+spring 3.1.1+hibernate 3.6.7,jdk 1.5+ tomcat 6,方便快速搭建开发环境,压缩包...

    java web技术开发大全(最全最新)

    除此之外,《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》还提供了两个完整的实例来讲解开发SSH的详细步骤和方法。通过对这两个实例的学习,读者可以对SSH开发模式有更透彻地理解和认识。SSH是...

    java web开发技术大全

    除此之外,《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》还提供了两个完整的实例来讲解开发SSH的详细步骤和方法。通过对这两个实例的学习,读者可以对SSH开发模式有更透彻地理解和认识。SSH是...

    使用Annotation并对DAO层封装具有分页功能的S2SH整合实例_好资源0分送

    开发步骤 2 环境的集成 2 Struts2.1.8所需Jar包 2 Hibernate3.3所需Jar包 3 Spring3.0所需Jar包 3 基于Annotation的Struts配置 5 基于Annotation的Hibernate配置 6 基于Annotation的Spring配置 10 DAO层封装 12 分页...

    低清版 大型门户网站是这样炼成的.pdf

    6.4.3 ssh 2组合框架的基本开发步骤—eportal启程 414 6.5 小结 423 第2篇 实践篇 第7章 ssh 2热身——构建新闻发布系统 427 7.1 门户网站新闻资讯基本分类 427 7.2 新闻发布系统需求分析 429 7.3 新闻发布...

    Java Web应用详解.张丽(带详细书签).pdf

    15.3 实例开发步骤 15.4 实例完善 项目实战篇 第16章 通用论坛BBS设计与实现 16.1 关键技术解析 16.2 系统功能分析 16.3 数据库设计与连接 16.4 各模块功能设计与实现 第17章 社交网站设计与实现 17.1 关键...

    后台管理系统

    大家回想我们开发的时候搭建项目工程的时候,配置pom,各种拷贝。每次都这样是不是很麻烦。那么我们能不能整理一个基础项目基础模板出来,就这样adminstore诞生了。adminstore整合了spring,hibernate,shiro,...

    千方百计笔试题大全

    96、Hibernate工作原理及为什么要用? 22 97、Hibernate是如何延迟加载? 22 98、Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系) 22 99、说下Hibernate的缓存机制 22 100、Hibernate的查询方式 23 101...

    JAVA上百实例源码以及开源项目源代码

     用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历,...

    java面试宝典

    96、Hibernate工作原理及为什么要用? 22 97、Hibernate是如何延迟加载? 22 98、Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系) 22 99、说下Hibernate的缓存机制 22 100、Hibernate的查询方式 23 101...

    java源码包2

     用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历...

    JAVA上百实例源码以及开源项目

     用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历,...

    java源码包---java 源码 大量 实例

     用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历,...

    java源码包3

     用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历...

    java源码包4

     用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java目录监视器源程序 9个目标文件 内容索引:JAVA源码,综合应用,目录监视 用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。...

Global site tag (gtag.js) - Google Analytics