Hibernate 简单 的 增删改查 实例

  1. 导入hibernate jar包 和 数据库驱动jar包
    把下载的hibernate包解压
    把required文件夹下的所有jar包复制到工程下

    hibernate\hibernate-release-4.3.11.Final\lib\required

  2. 生成hibernate.cfg.xml配置文件
    在src目录下生成

<!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">oracle.jdbc.driver.OracleDriver</property>
        <property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
        <property name="connection.username">scott</property>
        <property name="connection.password">tiger</property>

        <!-- 格式化sql语句 -->
        <property name="format_sql">true</property>

        <!-- 官方语言 -->
        <property name="dialect">org.hibernate.dialect.OracleDialect</property>
        <!-- 控制台显示sql -->
        <property name="show_sql">true</property>
        <!-- 自动创建表 -->
         <property name="hbm2ddl.auto">create</property> 


    <!-- 映射文件 -->
        <mapping resource="com/ly/bean/User.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

3.编写实体类
User.java

package com.ly.bean;

import java.util.Date;

public class User {
    private Integer id;
    private String username;
    private String phone;
    private String password;
    private Date register;

    public User() {
        // TODO Auto-generated constructor stub
    }

    public User(Integer id, String username, String phone, String password,
            Date register) {
        super();
        this.id = id;
        this.username = username;
        this.phone = phone;
        this.password = password;
        this.register = register;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Date getRegister() {
        return register;
    }

    public void setRegister(Date register) {
        this.register = register;
    }

    @Override
    public String toString() {
        return "User [id=" + id + ", username=" + username + ", phone=" + phone
                + ", password=" + password + ", register=" + register + "]";
    }


}

4.编写实体类对应的映射文件
User.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.ly.bean">
    <class name="User" table="tb_users">
        <id name="id" column="id" type="integer">
            <!-- 主键生成方式,native由数据库自己判断  identity、hilo、sequence  MySQL则为identity ,oracle则为sequence-->
            <!-- 生成主键的策略,只有插入表的时候有该策略 
                1,increment (hibernate框架,取到最大id+1,如果没有则从1开始)
                2,identity, 使用数据库自动增长,依赖于数据库
                3,sequence, 序列,依赖于数据库,oracle
                4,native (根据不同的数据库,选择identity,或者 sequence)
                5,assigned,指定id(自己编写)
            -->
            <generator class="sequence"/>

        </id>

        <!-- 1.type们可以使用hibernate类型,则首字母小写,也可以使用java类型  java.lang.String  也可以省略type  默认实体类中的类型
             2.column 可写  也可不写,默认属性名
         -->
        <property name="username" column="uname" type="string"></property>
        <property name="phone" column="phone" type="string"></property>
        <property name="password" column="password" type="string"></property>
        <property name="register" column="register" type="date"></property>
    </class>
</hibernate-mapping>

5.编写DAO层 操作类

package com.ly.dao;

import java.util.Arrays;
import java.util.Date;
import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;

import com.ly.bean.User;

public class UserDao {
    private static SessionFactory sf = null;

    public UserDao() {
        // 建立一个配置类,通过configure()方法来加载配置文件
        Configuration cf = new Configuration().configure();

        // 建立一个注册类,提供注册服务。hibernate4.0以后增加的 传入参数配置类的属性
        ServiceRegistry sr = new StandardServiceRegistryBuilder()
                .applySettings(cf.getProperties()).build();

        // 通过配置类,建立一个会话工厂SessionFactory重量级的,是线程安全的。
        sf = cf.buildSessionFactory(sr);
    }

    public User getUserById(Integer id) {

        // 建立一个会话,相当于一个connection
        Session session = sf.openSession();

        User user = (User) session.get(User.class, id);
        System.out.println(user);
        session.close();
        return user;
    }

    public List getUserList() {

        // 建立一个会话,相当于一个connection
        Session session = sf.openSession();
        List list = null;
        list = session.createCriteria(User.class).list();
        session.close();
        return list;
    }

    public void save(User u) {
        // User u = new User(0,"aa","13901234567","admin",new Date());
        Session session = sf.openSession();
        Transaction t = session.getTransaction();
        t.begin();

        session.save(u);

        t.commit();
        System.out.println("save");
    }

    public void delete(Integer id) {
        Session session = sf.openSession();
        Transaction t = session.getTransaction();
        t.begin();

        User u = (User) session.get(User.class, id);
        session.delete(u);
        t.commit();
        System.out.println("delete");
    }

    public void update(User user) {
        Session session = sf.openSession();
        Transaction t = session.getTransaction();
        t.begin();

        // User u = (User)session.get(User.class, id);
        // if(u != null){

        session.update(user);
        // }
        t.commit();
        System.out.println("update");
    }

    public void close() {
        sf.close();
    }

    public static void main(String[] args) {
        UserDao ud = new UserDao();
        // User u = new User(null,"aa","13901234567","admin",new Date());
        // ud.save(u);
        List list = ud.getUserList();
        System.out.println("共有  " + list.size() + "  条记录");
        System.out.println(Arrays.toString(list.toArray()));
        // User user = new User(2001,"cc","13901234567","admin",new Date());
        // ud.update(user);

        // ud.delete(2001);
        ud.close();
    }
}

6.测试即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值