hibernate框架搭建

 

 

hibernate框架的搭建步骤:

1.导包

2.创建数据库准备表

3.书写orm元数据(对象与表的映射配置文件)

4.书写配置文件

5.书写代码测试

 

一、导包:

  创建web-maven工程添加hibernate核心包以及mysql驱动包

  

	     <dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-core</artifactId>
			<version>5.0.7.Final</version>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.46</version>
		</dependency>

  导包完成后会显示

二、创建数据库准备表

  

 CREATE TABLE `cst_customer` (
	  `cust_id` BIGINT(32) NOT NULL 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_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;

三、书写orm数据元对象

  实体类 Customer

public class Customer {
	
	/*
	 * CREATE TABLE `cst_customer` (
	  `cust_id` BIGINT(32) NOT NULL 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_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 String cust_source;
	private String cust_industry;
	private String cust_level;
	private String cust_linkman;
	private String cust_phone;
	private String cust_mobile;
	public Long getCust_id() {
		return cust_id;
	}
	public void setCust_id(Long cust_id) {
		this.cust_id = cust_id;
	}
	public String getCust_name() {
		return cust_name;
	}
	public void setCust_name(String cust_name) {
		this.cust_name = cust_name;
	}
	public String getCust_source() {
		return cust_source;
	}
	public void setCust_source(String cust_source) {
		this.cust_source = cust_source;
	}
	public String getCust_industry() {
		return cust_industry;
	}
	public void setCust_industry(String cust_industry) {
		this.cust_industry = cust_industry;
	}
	public String getCust_level() {
		return cust_level;
	}
	public void setCust_level(String cust_level) {
		this.cust_level = cust_level;
	}
	public String getCust_linkman() {
		return cust_linkman;
	}
	public void setCust_linkman(String cust_linkman) {
		this.cust_linkman = cust_linkman;
	}
	public String getCust_phone() {
		return cust_phone;
	}
	public void setCust_phone(String cust_phone) {
		this.cust_phone = cust_phone;
	}
	public String getCust_mobile() {
		return cust_mobile;
	}
	public void setCust_mobile(String cust_mobile) {
		this.cust_mobile = cust_mobile;
	}
	@Override
	public String toString() {
		return "Customer [cust_id=" + cust_id + ", cust_name=" + cust_name + "]";
	}

}

  实体类hibernate映射文件 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">
    <hibernate-mapping package="com.hibernate.entity">
    	<class name="Customer" table="cst_customer">
    		<id name="cust_id">
    			<generator class="native"></generator>
    		</id>
    		<!-- id元素:配置主键映射的属性
				name: 填写主键对应属性名
				column(可选): 填写表中的主键列名.默认值:列名会默认使用属性名
				type(可选):填写列(属性)的类型.hibernate会自动检测实体的属性类型.
						每个类型有三种填法: java类型|hibernate类型|数据库类型
				not-null(可选):配置该属性(列)是否不能为空. 默认值:false
				length(可选):配置数据库中列的长度. 默认值:使用数据库类型的最大长度
		 -->
    		<property name="cust_name" column="cust_name"/>
    		<!-- property元素:除id之外的普通属性映射
				name: 填写属性名
				column(可选): 填写列名
				type(可选):填写列(属性)的类型.hibernate会自动检测实体的属性类型.
						每个类型有三种填法: java类型|hibernate类型|数据库类型
				not-null(可选):配置该属性(列)是否不能为空. 默认值:false
				length(可选):配置数据库中列的长度. 默认值:使用数据库类型的最大长度
		 -->
    		<property name="cust_source" column="cust_source"/>
    		<property name="cust_industry" column="cust_industry"/>
    		<property name="cust_level" column="cust_level"/>
    		<property name="cust_linkman" column="cust_linkman"/>
    		<property name="cust_phone" column="cust_phone"/>
    		<property name="cust_mobile" column="cust_mobile"/>
    	</class>
    </hibernate-mapping>
   

  

  PS:hibernate的xml配置文件记得导入约束,否则会报错 导入约束所在的文件流程:

  找到包名hibernate-core-........jar

  此包目录下的两个dtd文件

  这里导入mappIng约束和configuration约束相同

 

 window-perferences-收索xml-xml catalog中添加约束:具体如下图:

点击add添加约束

四、书写配置文件

配置hibernate cfg配置文件,格式以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:///test</property>
	 <property name="hibernate.connection.username">root</property>
	 <property name="hibernate.connection.password">root</property>
	 <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
	 
	 
	 <!-- 
	 #hibernate.show_sql true
	 #hibernate.format_sql true
	  -->
	  <property name="hibernate.show_sql">true</property>
	  <property name="hibernate.format_sql">true</property>
	  <!-- 
	  #hibernate.hbm2ddl.auto create-drop
	  #hibernate.hbm2ddl.auto create
	  #hibernate.hbm2ddl.auto update
	  #hibernate.hbm2ddl.auto validate
	   -->
	  <property name="hibernate.hbm2ddl.auto">update</property>
	  <mapping resource="com/hibernate/entity/Customer.hbm.xml"/>
	</session-factory>
	</hibernate-configuration>

五、书写代码测试

 

package com.hibernate.test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;

import com.hibernate.entity.Customer;

public class Demo1 {
	
	@Test
	public void test(){
		//加载配置文件hibernate.cfg.xml
		Configuration cfg=new Configuration().configure();
		//构建session工厂
		SessionFactory sessionfaction = cfg.buildSessionFactory();
		//打开session
		Session session = sessionfaction.openSession();
		//创建事务
		Transaction tx = session.beginTransaction();
		
		Customer c = new Customer();
		c.setCust_name("百度");
		c.setCust_phone("0213251");
		
		//保存c
		session.save(c);
		//执行事务
		tx.commit();
		//关闭事务
		session.close();
	}
}

  输出结果:

  数据库显示:

 

posted @ 2019-03-05 14:14  含苞待放会有时  阅读(219)  评论(0编辑  收藏  举报