开始使用Hibernate

Hibernate配置与基本映射
本文介绍了Hibernate的配置过程及基本映射方法,包括导入jar包、配置hibernate.cfg.xml文件、创建持久化类等步骤,并通过示例展示了如何进行简单的数据操作。
一、本节说明

本节主要记录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   第一条新闻的内容    第一条新闻
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值