一、本节说明
本节主要记录Hibernate的配置信息以及基本映射
二、配置Hibernate
Step1:导入jar包
将hibernate解压目录/lib下的required文件夹下的jar包、optional/c3p0下的jar包、数据库驱动文件放在项目的WebRoot/WEB-INF/lib下
Step2:配置
在src下创建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>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost/hibernate</property>
<property name="connection.username">root</property>
<property name="connection.password">123456</property>
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.min_size">1</property>
<property name="hibernate.c3p0.timeout">5000</property>
<property name="hibernate.c3p0.max_statements">100</property>
<property name="hibernate.c3p0.idle_test_period">3000</property>
<property name="hibernate.c3p0.acquire_increment">2</property>
<property name="hibernate.c3p0.validate">true</property>
<property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
<property name="hbm2ddl.auto">update</property>
<property name="show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<!--这里罗列所有的可持久化类-->
<mapping class="cn.lzf.entity.News" />
</session-factory>
</hibernate-configuration>
以上代码主要配置了数据库的基本属性、c3p0数据源以及需要罗列出所有的可持久化类,配置好就可以开始使用了
三、Hibernate的基本映射
基本映射是将将一个持久化类映射成一张数据表,该持久化类的属性是基本类型。
Step1:创建持久化类
@Entity
@Table(name="news_inf")
public class News {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
private String title;
private String content;
//省略所有的setter、getter方法
}
可以看到除了四个注解外这个类并没有什么不同。
@Entity 指明该类是持久化类
@Table(name=”news_inf”) 指明将该类映射为数据表,表名为news_Inf
@Id 指明被修饰的属性为主键
@GeneratedValue(strategy=GenerationType.IDENTITY) 指定主键的生成策略为自增
Step2:罗列持久化类
在hibernate.cfg.xml中添加如下片段
<mapping class="cn.lzf.entity.News" />
Step3:以面向对象的方式操作持久化类
看下列方法:
public void news(){
//实例化Configuration
Configuration config=new Configuration().configure();
ServiceRegistry serviceRegistry=new StandardServiceRegistryBuilder()
.applySettings(config.getProperties()).build();
SessionFactory sf=config.buildSessionFactory(serviceRegistry);
Session session=sf.openSession();
//开始事务
Transaction tx=session.beginTransaction();
//新建一条新闻
News news=new News();
news.setTitle("第一条新闻");
news.setContent("第一条新闻的内容");
//保存news对象
session.save(news);
//事务提交
tx.commit();
//关闭session
session.close();
sf.close();
}
可以看到实际上关键的只有几行代码:
//新建一条新闻
News news=new News();
news.setTitle("第一条新闻");
news.setContent("第一条新闻的内容");
//保存news对象
session.save(news);
是不是很简单,调用该方法后会自动在数据库中创建一个news_inf表并添加一条记录
//运行结果
id content title
1 第一条新闻的内容 第一条新闻