Hibernate入门及环境搭建

Hibernate开发包

先去HIbernate官网下载开发包,当然官网下载一般速度比较慢,现提供网盘5.0.7版本开发包链接:https://pan.baidu.com/s/17oKQL5WzyYi3FXtejXnvYQ 提取码:23vy 。下载完之后解压缩,得到如下的文件目录:

 下面进行eclipse下的基础环境搭建:

需要的jar包包括:

hibernate开发包下的lib/required/*.jar

连接池:hibernate开发包下的lib\optional\c3p0\*.jar

数据库驱动包mysql-connector-java-5.1.39-bin.jar

日志包apacha-log4j.jar

新建Java工程并在根目录下创建lib文件夹并将上述jar包拷贝进来,并加入到新建的工程中

创建后的目录结构如下:

 现添加数据库表,实体类以及对应的映射文件

数据库表:

CREATE TABLE `cst_customer` (
  `cust_id` int AUTO_INCREMENT COMMENT '客户编号(主键)',
  `cust_name` varchar(32) NOT NULL COMMENT '客户名称(公司名称)',
  `cust_source` varchar(32) DEFAULT NULL COMMENT '客户信息来源',   
  `cust_industry` varchar(32) DEFAULT NULL COMMENT '客户所属行业',
  `cust_level` varchar(32) DEFAULT NULL COMMENT '客户级别',
  `cust_phone` varchar(64) DEFAULT NULL COMMENT '固定电话',
  `cust_mobile` varchar(16) DEFAULT NULL COMMENT '移动电话',
  PRIMARY KEY (`cust_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

实体类:

public class Customer {
	private Long cust_id;// '客户编号(主键)'
	private String cust_name;// '客户名称(公司名称)'
	private String cust_source;// '客户信息来源',
	private String cust_industry;// '客户所属行业'
	private String cust_level;// '客户级别'
	private String cust_address;// '客户联系地址'
	private String cust_phone;// '客户联系电话'
}
//省略get/set方法

实体类映射文件:

实体类映射文件一般命名为:实体类名.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">
<!-- 做类(Customer)和表(cst_customer)的映射关系 -->
<hibernate-mapping>
		<!-- 
			class标签: 作用类和表的映射的
		 		name:类的全限定名(com.foresee.entity.Customer)
		 		table:表的全名(cst_customer)
		 -->
		<class name="com.foresee.entity.Customer" table="cst_customer">
			<!-- 
				id标签:做类中的某个属性 和 表的主键映射关系
				 name:类的某个属性名
				 column:表的主键字段名
			 -->
			<id name="cust_id" column="cust_id">
				<!-- 做主键的增长方式的   
					  native: AUTO_INCREMENT 让主键自动增长 -->
				<generator class="native"></generator>
			</id>
			
			<!-- 
				property标签:做其它属性和其它字段的映射关系 
				   name属性:类的其它属性名
				   column属性:表的其它字段名
				   ps:如果属性名和字段名一致 column可以省略不写
			-->
			<property name="cust_name" column="cust_name" length="20" not-null="true" unique="true"></property>
			<property name="cust_source" column="cust_source"></property>
			<property name="cust_industry" column="cust_industry"></property>
			<property name="cust_level" column="cust_level"></property>
			<property name="cust_address" column="cust_address"></property>
			<property name="cust_phone" column="cust_phone"></property>
		</class>
</hibernate-mapping>

实体类映射文件xml约束存在于

创建Hibernate的核心配置信息文件

在src下创建名为hibernate.cfg.xml的配置文件,由程序自动加载

<?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要连接的数据库信息 -->
<hibernate-configuration>
		 <session-factory> <!-- 生产session的工厂   session是connection -->
		 		<!-- 数据的驱动 -->
		 		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		 		<!-- 数据库的地址 
		 			jdbc:mysql:///test ==jdbc:mysql://localhost:3306/test
		 		-->
		 		<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property>
		 		<!-- 数据库的用户名  -->
		 		<property name="hibernate.connection.username">root</property>
		 		<!-- 数据库的密码 -->
		 		<property name="hibernate.connection.password">123456</property>
		 		<!-- 数据库的方言
		 			 分页: 
		 			   mysql:     select * from 表  limit ?,?
		 			   sqlserver: select * from 表  top ?,?
		 			   让hibernate生成符合我mysql数据库的sql语句 
		 		 -->
		 		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
		 	
		 		<!-- 告诉hibernate要用c3p0 -->
		 		<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
		 		<!-- hibernate自动生成的sql语句在控制台显示出来 -->
		 		<property name="hibernate.show_sql">true</property>
		 		<!-- 显示的sql语句更加的格式化 -->
		 		<property name="hibernate.format_sql">true</property>
		 		
		 		<!-- 让hibernate根据映射关系自动生成数据库的表 默认hibernate不会主动创建表 
		 			 create:没有表创建表 有表删除掉创建表
		 			 create-drop:没有表创建表 有表删除掉创建表 用完就全删
		 			 					 做测试
		 			
		 			 update: 企业开发使用  没有表 创建表  有表 使用表
		 			 validate:默认 不创建
		 		-->
		 		<property name="hibernate.hbm2ddl.auto">update</property>
		 		
		 		<!-- 加载映射文件(Customer.hbm.xml)的地址 -->
		 		<mapping resource="com/foresee/entity/Customer.hbm.xml"/>
		 </session-factory>

</hibernate-configuration>

 核心配置文件的约束头位于:

创建工具类获取session

public class HibernateUtils {
	static Configuration configuration = null;
	static SessionFactory sessionFactory = null;
	static {
		// 加载一次配置文件
		configuration = new Configuration();
		configuration.configure();

		// 获取一个sessionFactory
		sessionFactory = configuration.buildSessionFactory();

	}

	public static Session openSession() {
		return sessionFactory.openSession();
	}
}

完成以上配置之后就能通过单元测试进行测试了

@Test 
	public void test1()
	{
		// 获取连接
		Session session = HibernateUtils.openSession();
		// 开启事务
		Transaction tx = session.beginTransaction();
		// 操作 (存一条数据到cst_customer)
		Customer customer = new Customer();
		customer.setCust_name("zhuliang");
		session.save(customer);
		// 提交
		tx.commit();
		// 关闭连接
		session.close();
		
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值