Hibernate之快速入门
程序员文章站
2024-03-23 13:07:10
...
目录
下载Hibernate
百度各种搜索下载Hibernate
下载解压缩之后,可以看到如下目录结构:
其中,在lib/required目录下,包含运行Hibernate项目必须的jar包有:
Hibernate的相关配置
Hibernate的相关配置文件分为两种:
-
xxx.hbm.xml
:它主要是用于描述类与数据库中的表的映射关系 -
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();
}
}
上一篇: Hibernate框架学习一快速入门