1.先介绍下hebernate
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架
2.核心配置文件
<?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>
<!--连接数据库的四个属性-->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/person</property>
<!--hibernate特有的方言,用于指定数据库-->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!--显示sql-->
<property name="show_sql">true</property>
<!--格式化sql-->
<property name="format_sql">true</property>
<!--表的创建方式-->
<property name="hbm2ddl.auto">update</property>
<!--指定映射文件,resource是相对路径,还有file绝对路径-->
<mapping resource="Person.hbm.xml"></mapping>
</session-factory>
</hibernate-configuration>
方言:根据不同的方言选择不同,
表的创建方式
3.分三方面建立关系
R ->关系表
首先准备一个表,在这使用的是mysql,大概是这么个表
create table person(
id int ,
name varchar(50)
)
O ->
**
* O 实体类
* 不能重写equals和hashcode方法
* 类不能是final修饰(hibernate内部是使用动态代理)
*/
public class Person {
private Integer id;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Person() {
}
public Person(Integer id, String name) {
this.id = id;
this.name = name;
}
@Override
public String toString() {
return "Person{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
M ->
<?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.self.entity">
<!--指向映射的表-->
<class name="Person" table="person">
<!--设置主键,将实体类属性和关系表字段映射-->
<id name="id" column="id">
<!--主键生成策略-->
<generator class="native"></generator>
</id>
<!--一样列可省略-->
<property name="name"></property>
</class>
</hibernate-mapping>
主键的生成策略
使用序列时注意:
以上就是一个简单的案例,增删改查写在一起了,直接执行可能有些问题,