SSH整合(一)hibernat非Annotation配置

 

开发环境:MyEclipse6.5 + JDK1.6.0_33 + tomcat 6.0.32 + struts2.3.8 + spring3.2.1 + hibernate4.1.9

 

项目结构:

     SSO
        |----src
               |----com.login.junit
                                      |----SSOTest.java
               |----com.login.module
                                      |----User.java
                                      |----UserMapper.java
                                      |----User.hbm.xml
               |----hibernate.cfg.xml

 

步骤1:加入hibernate Jar

       

步骤2:建表

   

步骤3:新建java实体类

 

package com.login.module;

import java.io.Serializable;

public class User implements Serializable{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	 
	
	private String id;
	private String name;
	private String pwd;
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
 
}


步骤4:实体与数据库的映射文件XX.hbm.xml;

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.login.module">
	<class name="User" table="user">
		<id name="id" type="java.lang.String">
		<!-- generator设置主键生成策略  assigned:主键由外部程序负责生成,无需Hibernate参与 -->
		 	<generator class="assigned"></generator>
		</id>
		<property name="name" type="java.lang.String">
			<column name="name" length="50"/>
		</property>
		<property name="pwd" type="java.lang.String">
			<column name="pwd" length="100" />
		</property>
	</class>
</hibernate-mapping>


 

步骤5:hibernate配置文件hibernate.cfg.xml;

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC 
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 
<!-- 声明Hibernate配置文件的开始 -->
<hibernate-configuration>
	<!-- session-factory主要配置Hibernate信息及对Session操作 -->
	<session-factory>
		<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
		<property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:8080:test</property>
		<property name="hibernate.connection.username">admin</property>
		<property name="hibernate.connection.password">admin</property>
		
		
		<!-- 数据库连接池大小 -->
		<property name="hibernate.connection.pool.size">20</property>
		<!--是否在后台显示Hibernate用到的SQL语句,开发时设置为true,便于差错,程序运行时可以在Eclipse的控制台显示Hibernate的执行Sql语句。项目部署后可以设置为false,提高运行效率--> 
		<property name="hibernate.show_sql">true</property>
		<!--jdbc.fetch_size是指Hibernate每次从数据库中取出并放到JDBC的Statement中的记录条数。Fetch Size设的越大,读数据库的次数越少,速度越快,Fetch Size越小,读数据库的次数越多,速度越慢--> 
        <property name="hibernate.jdbc.fetch_size">50</property> 
        <!--jdbc.batch_size是指Hibernate批量插入,删除和更新时每次操作的记录数。Batch Size越大,批量操作的向数据库发送Sql的次数越少,速度就越快,同样耗用内存就越大--> 
        <property name="hibernate.jdbc.batch_size">23</property> 
        <!--jdbc.use_scrollable_resultset是否允许Hibernate用JDBC的可滚动的结果集。对分页的结果集。对分页时的设置非常有帮助--> 
        <property name="hibernate.jdbc.use_scrollable_resultset">false</property> 
        <!--connection.useUnicode连接数据库时是否使用Unicode编码--> 
        <property name="hibernate.Connection.useUnicode">true</property> 
        <!--connection.characterEncoding连接数据库时数据的传输字符集编码方式,最好设置为gbk,用gb2312有的字符不全--> 
    	<property name="hibernate.connection.characterEncoding">utf-8</property>      
        <!--hibernate.dialect 只是Hibernate使用的数据库方言,就是要用Hibernate连接那种类型的数据库服务器。--> 
        <property name="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</property><!-- 或者org.hibernate.dialect.OracleDialect -->
       
        <property name="hibernate.hbm2ddl.auto">update</property> 
       
        <!-- 非Annotation模式,需要关联实体类配置-->        
        <mapping resource="com/login/module/User.hbm.xml"/>
        
	</session-factory>
</hibernate-configuration>


 

步骤6:服务测试类UserManager.java

package com.login.module;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

public class UserMapper {

	/**
	*hibernate4的sessionFactory创建方式
	*/
	private SessionFactory buildSessionFactory() {
		Configuration cfg = new Configuration();
		cfg.configure();
		ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()
				.applySettings(cfg.getProperties()).buildServiceRegistry();
		SessionFactory sf = cfg.buildSessionFactory(serviceRegistry);
		return sf;
	}
	public void add(User user){
		 Session s = buildSessionFactory().openSession();
		 s.beginTransaction();
		 s.save(user);
		 s.getTransaction().commit();
		 s.close();
	}
}

 

步骤7:Junit测试

package com.login.junit;

import com.login.module.User;
import com.login.module.UserMapper; 

import org.junit.Test; 

public class SSOTest{

	@Test
	public void testAdd() {
		  
		UserMapper userMapper = new UserMapper();
		
		User user = new User();
		user.setId("1");
		user.setName("lily");
		user.setPwd("123456");
		userMapper.add(user);
		 
		System.out.println("success add!");
	}
}


 输出:

 Hibernate: insert into user (id, name, pwd) values (?, ?, ?)
success add!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值