Hibernate之快速入门

目录

下载Hibernate

 Hibernate的相关配置文件

实体类

映射配置文件

根元素--hibernate-mapping

class元素--类映射

id元素--主键映射

property元素--类属性映射

核心配置文件

必选属性配置(5个)

可选属性配置(3个)

映射配置文件引入

测试类


下载Hibernate

百度各种搜索下载Hibernate

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

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

 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();
	}
}

猜你喜欢

转载自blog.csdn.net/mmake1994/article/details/81479695