欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Hibernate之快速入门

程序员文章站 2024-03-23 13:07:10
...

目录

下载Hibernate

 Hibernate的相关配置

实体类

映射配置文件

核心配置文件

测试类


下载Hibernate

百度各种搜索下载Hibernate

Hibernate之快速入门

下载解压缩之后,可以看到如下目录结构: 

Hibernate之快速入门

其中,在lib/required目录下,包含运行Hibernate项目必须的jar包有: 

Hibernate之快速入门

 Hibernate的相关配置

Hibernate的相关配置文件分为两种:

  1. xxx.hbm.xml:它主要是用于描述类与数据库中的表的映射关系
  2. hibernate.cfg.xml:它是Hibernate框架的核心配置文件
  • 实体类

Customer实体类

public class Customer {
    //cst_customer数据表创建
/*	CREATE TABLE `cst_customer` (
			  `cust_id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '客户编号(主键)',
			  `cust_name` varchar(32) NOT NULL COMMENT '客户名称(公司名称)',
			  `cust_user_id` bigint(32) DEFAULT NULL COMMENT '负责人id',
			  `cust_create_id` bigint(32) DEFAULT NULL COMMENT '创建人id',
			  `cust_source` varchar(32) DEFAULT NULL COMMENT '客户信息来源',
			  `cust_industry` varchar(32) DEFAULT NULL COMMENT '客户所属行业',
			  `cust_level` varchar(32) DEFAULT NULL COMMENT '客户级别',
			  `cust_linkman` varchar(64) 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;*/
	private Long cust_id;
	private String cust_name;
	private Long cust_user_id;
	private Long cust_create_id;
	private String cust_source;
	private String cust_industry;
	private String cust_level;
	private String cust_linkman;
	private String cust_phone;
	private String cust_mobile;
    
    //.....后面自动生成的Get|Set省略
}
  • 映射配置文件

Customer.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">
    
  		<!--   配置表与实体映射关系 -->
  		<!-- package属性:填写一个包名,在元素内部,凡是需要书写完整类名的属性,可以直接简写类名 -->
<hibernate-mapping>
		<!-- 
			class标签:用来创建类和表的映射
				* name属性:类中的全路径
				* table属性:表名(如果类名和表名是一致的,那么table属性可以省略)
				* catalog属性:数据库名称,可以省略
		 -->
	<class name="com.mark.domain.Customer" table="cst_customer">
	
	
		<!--    建立类中的属性与表中的主键映射	-->
		<!-- 
			id标签:用来建立类中的属性与表中的主键字段对应
				* name属性:类中的属性名
				* column属性:表中字段名(如果类名和表名是一致的,那么column属性可以省略)
				* length属性:字段的长度
				* type属性:类型,三种写法:Java数据类型,Hibernate数据类型(默认),SQL类型
		 -->
	 	<id name="cust_id" column="cust_id">
	 	<!--    	主键生成策略			-->
	 		<generator class="native"></generator>
	 	</id>
	 	
	 	<!--    建立类中的普通属性与表中的字段映射	-->
		<!-- 
			property标签:用来建立类中的普通属性与表中的字段对应
				* name属性:类中的属性名
				* column属性:表中字段名(如果类名和表名是一致的,那么column属性可以省略)
				* length属性:字段的长度
				* type属性:类型,三种写法:Java数据类型,Hibernate数据类型(默认),SQL类型
				* not-null属性:配置该属性(列)是否能为空,默认值为false
		 -->
	 	<property name="cust_name" column="cust_name" ></property>
	 	<property name="cust_user_id" column="cust_user_id"></property>
	 	<property name="cust_create_id" column="cust_create_id"></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_linkman" column="cust_linkman"></property>
	 	<property name="cust_phone" column="cust_phone"></property>
	 	<property name="cust_mobile" column="cust_mobile"></property>
	</class>
</hibernate-mapping>
  • 核心配置文件

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-configuration>
	<session-factory>
	
	<!-- 	必要配置信息:连接数据库的基本信息		 -->
	<!--#hibernate.dialect org.hibernate.dialect.MySQLDialect
		#hibernate.dialect org.hibernate.dialect.MySQLInnoDBDialect
		#hibernate.dialect org.hibernate.dialect.MySQLMyISAMDialect
		#hibernate.connection.driver_class com.mysql.jdbc.Driver
		#hibernate.connection.url jdbc:mysql:///test
		#hibernate.connection.username gavin
		#hibernate.connection.password -->
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.url">jdbc:mysql:///crm</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">root</property>
		
		<!--Hibernate的属性  -->
		<!--Hibernate的方言:根据配置的方言生成相应的SQL语句  -->
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
		
		
   <!-- #hibernate.show_sql true
		#hibernate.format_sql true -->
		<!--Hibernate显示SQL语句  -->
		<property name="hibernate.show_sql">true</property>
		<!--Hibernate格式化SQL语句  -->
		<property name="hibernate.format_sql">true</property>
		
		<!-- ## auto schema export
		#hibernate.hbm2ddl.auto create-drop
		#hibernate.hbm2ddl.auto create
		#hibernate.hbm2ddl.auto update
		#hibernate.hbm2ddl.auto validate -->
		<!--Hibernate的hbm2ddl(数据库定义语言:create  drop   alter  update .....)  -->
		<!-- 
			hbm2ddl.auto的取值
				* none:不用Hibernate自动生成表
				* create:每次都会创建一个新的表(测试)
				* create-drop:每次都会创建一个新的表,执行程序结束后删除这个表(测试)
				* update:如果数据库中有表,使用原来的表,如果没有表,创建一个新表,可以更新表结构
				* validate:只会使用原有的表,对映射关系进行校验
		 -->
		<property name="hibernate.hbm2ddl.auto">update</property>
		
		<!--Hibernate加载映射  -->
		<mapping resource="com/mark/domain/Customer.hbm.xml"/>
	</session-factory>
</hibernate-configuration>

测试类

public class DemoSave {

	@Test
	public void test() {
		// 1.加载配置文件
		Configuration conf = new Configuration().configure();
		// 2.创建一个SessionFactory
		SessionFactory factory = conf.buildSessionFactory();
		// 3.创建Session对象,类似Connection
		Session session = factory.openSession();
		// 4.开启事务
		Transaction tx = session.beginTransaction();
		// 5.执行相关操作
		Customer customer = new Customer();
		customer.setCust_name("mark");

		session.save(customer);

		// 6.事务提交
		tx.commit();
		// 7.释放资源
		session.close();
		factory.close();
	}
}