Java_Web三大框架之Hibernate增删改查

下面介绍一下Hibernate的增删改查。

第一步:编写用户实体类以及User.hbm.xml映射

package com.msl.entity;

public class User {

    private int id;
    private String name;
    private String password;
    private String telephone;
    private String username;
    private String isadmin;

    public User() {
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getTelephone() {
        return telephone;
    }
    public void setTelephone(String telephone) {
        this.telephone = telephone;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getIsadmin() {
        return isadmin;
    }
    public void setIsadmin(String isadmin) {
        this.isadmin = isadmin;
    }
}

User.hbm.xml映射

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping
    package="com.msl.entity">

    <class name="User" table="Users"> <!-- 对持久化类User的映射配置 -->
        <!--
            Hibernate主键策略:
                1、increment:用于Long、Short或者Int类型生成唯一标识。在集群下不要使用该属性
                2、identity:由底层数据库生成该属性,前提是底层数据库支持自增字段类型
                3、sequence:根据底层数据库的序列生成主键,前提是底层数据库支持序列
                4、hilo:根据高/低算法生成,吧特定表的字段作为高位值来源,在默认情况下选用hibernate_unique_key表的next_hi字段
                5、native:
                6、assigned:
                7、select:
                8、foreign:
         -->
        <id name="id">
            <generator class="increment"/>
        </id>
        <!--
            name:持久化类属性的名称;以小写字母开头
            column:数据库字段名
            type:数据库字段类型
            length:数据库字段定义的长度
            not-null:给数据库字段是否可以为空,该属性为布尔变量
            unique:该数据库字段是否唯一,该属性为布尔变量
            lazy:是否延迟抓取,该属性为布尔变量
         -->
        <property name="name" not-null="true" />
        <property name="password" not-null="true"/>
        <property name="telephone" not-null="true"/>
        <property name="username" not-null="true"/>
        <property name="isadmin" not-null="true"/>
    </class>

</hibernate-mapping>

第二步:封装HibernateUtil类

package com.msl.HibernateUtil;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {

    private HibernateUtil(){

    };
    public static SessionFactory sessionFactory=null;

    static{
        //Hibernate初始化
        Configuration cf=new  Configuration();
        cf.configure();
        sessionFactory=cf.buildSessionFactory();//DriverManager.getConnection(url)
        //Session session = SessionFactory.openSession();//相当于得到Connection对象

    }
    public static Session getSession(){
        return  sessionFactory.openSession();
    }
    public static void closeSession(Session session){
        if(session!=null){
            session.close();
        }
    }
}

第三步:编写hibernate.cfg.xml映射

<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <session-factory>
        <!-- 数据库方言 -->
        <!--
        MySQL: #hibernate.dialect org.hibernate.dialect.MySQLDialect
        Oracle:#hibernate.dialect org.hibernate.dialect.OracleDialect
        SQLServer:#hibernate.dialect org.hibernate.dialect.SQLServerDialect
         -->
        <property name="dialect">    <!-- Hibernate方言 -->
            org.hibernate.dialect.OracleDialect
        </property>
        <property name="hibernate.connection.url">    <!-- 数据库连接URL -->
            jdbc:oracle:thin:@localhost:1521:orcl
        </property>
        <property name="hibernate.connection.driver_class">    <!-- 数据库驱动 -->
            oracle.jdbc.driver.OracleDriver
        </property>
        <!-- 数据库连接用户名 -->
        <property name="hibernate.connection.username">epet</property>
        <!-- 数据库连接密码 -->
        <property name="hibernate.connection.password">123456</property>
        <property name="show_sql">true</property>    <!-- 打印SQL语句 -->
        <!-- 自动创建数据库表格 -->
        <!--
            #hibernate.hbm2ddl.auto create-drop
            #hibernate.hbm2ddl.auto create
            #hibernate.hbm2ddl.auto update
            #hibernate.hbm2ddl.auto validate
         -->
        <property name="hibernate.hbm2ddl.auto">update</property>
        <mapping resource="com/msl/entity/User.hbm.xml"/>    <!-- 配置映射信息 -->
    </session-factory>
</hibernate-configuration>

第四步:增删改查测试类:

package com.msl.test;

import org.hibernate.Session;
import org.hibernate.Transaction;

import com.msl.HibernateUtil.HibernateUtil;
import com.msl.entity.User;

/**
 * Hibernate保存数据
 * @author Administrator
 *
 */
public class test {

    public static void main(String[] args) {

        User user=new User();
        user.setName("dsd");
        user.setPassword("123456");
        user.setTelephone("1234567890");
        user.setUsername("小明");
        user.setIsadmin("2");

        Session session=HibernateUtil.getSession();

        //进行事务处理
        Transaction transaction=session.beginTransaction();
        try{
            //对数据保存至数据库
            session.save(user);
            //提交事务
            transaction.commit();
        }catch(Exception e){
            e.printStackTrace();
            //如果出现异常,事务回滚
            transaction.rollback();
        }finally{
            HibernateUtil.closeSession(session);
        }
    }

}
package com.msl.test;

import org.hibernate.Session;
import org.hibernate.Transaction;

import com.msl.HibernateUtil.HibernateUtil;
import com.msl.entity.User;
/**
 * Hibernate更新数据
 * @author Administrator
 *
 */
public class test1 {

//    /**
//     * update 更新数据
//     * @param args
//     */
//    public static void main(String[] args) {
//        User user=new User();
//        user.setId(2);
//        user.setName("dsd");
//        user.setPassword("123456");
//        user.setTelephone("1234567890");
//        user.setUsername("小明");
//        user.setIsadmin("1");
//
//        Session session=HibernateUtil.getSession();
//
//        //进行事务处理
//        Transaction transaction=session.beginTransaction();
//        try{
//            //对数据保存至数据库
//            session.update(user);
//            //提交事务
//            transaction.commit();
//        }catch(Exception e){
//            e.printStackTrace();
//            //如果出现异常,事务回滚
//            transaction.rollback();
//        }finally{
//            HibernateUtil.closeSession(session);
//        }
//    }
    public static void main(String[] args) {
        Session session=null;
        Transaction transaction=null;
        try{
            session=HibernateUtil.getSession();
            transaction=session.beginTransaction();
            User user=(User)session.get(User.class, new Integer("1"));
            user.setIsadmin("2");
            session.flush();
            transaction.commit();
        }catch(Exception e){
            System.out.println("更新失败");
            e.printStackTrace();
            transaction.rollback();
        }finally{
            HibernateUtil.closeSession(session);
        }
    }
}
package com.msl.test;

import org.hibernate.Session;
import org.hibernate.Transaction;

import com.msl.HibernateUtil.HibernateUtil;
import com.msl.entity.User;

/**
 * Hibernate查询数据
 * @author Administrator
 *
 */
public class test2 {

//    /**
//     * 查询 方法 get()
//     * @param args
//     */
//    public static void main(String[] args) {
//        Session session=HibernateUtil.getSession();
//        //进行事务处理
//        Transaction transaction=session.beginTransaction();
//        try{
//            User user=(User)session.get(User.class, new Integer("2"));
//            System.out.println("id:"+user.getId());
//            System.out.println(user.getName());
//            System.out.println(user.getPassword());
//            System.out.println(user.getTelephone());
//            System.out.println(user.getUsername());
//            System.out.println(user.getIsadmin());
//            //提交事务
//            transaction.commit();
//        }catch(Exception e){
//            e.printStackTrace();
//            //如果出现异常,事务回滚
//            transaction.rollback();
//        }finally{
//            HibernateUtil.closeSession(session);
//        }
//
//    }
//    /**
//     * 查询 方法load() 1
//     * @param args
//     */
//    public static void main(String[] args) {
//        Session session=HibernateUtil.getSession();
//        //进行事务处理
//        Transaction transaction=session.beginTransaction();
//        try{
//            User user=(User)session.load(User.class, new Integer("2"));
//            System.out.println("id:"+user.getId());
//            System.out.println(user.getName());
//            System.out.println(user.getPassword());
//            System.out.println(user.getTelephone());
//            System.out.println(user.getUsername());
//            System.out.println(user.getIsadmin());
//            //提交事务
//            transaction.commit();
//        }catch(Exception e){
//            e.printStackTrace();
//            //如果出现异常,事务回滚
//            transaction.rollback();
//        }finally{
//            HibernateUtil.closeSession(session);
//        }
//
//    }
    /**
     * 查询 方法load() 1
     * @param args
     */
    public static void main(String[] args) {
        User user=new User();
        Session session=HibernateUtil.getSession();
        //进行事务处理
        Transaction transaction=session.beginTransaction();
        try{
            session.load(user,new Integer("2"));
            System.out.println("id:"+user.getId());
            System.out.println(user.getName());
            System.out.println(user.getPassword());
            System.out.println(user.getTelephone());
            System.out.println(user.getUsername());
            System.out.println(user.getIsadmin());
            //提交事务
            transaction.commit();
        }catch(Exception e){
            e.printStackTrace();
            //如果出现异常,事务回滚
            transaction.rollback();
        }finally{
            HibernateUtil.closeSession(session);
        }

    }

}
package com.msl.test;

import org.hibernate.Session;
import org.hibernate.Transaction;

import com.msl.HibernateUtil.HibernateUtil;
import com.msl.entity.User;

/**
 * 删除数据
 * @author Administrator
 *
 */
public class test3 {

    public static void main(String[] args) {

        Session session=HibernateUtil.getSession();
        //进行事务处理
        Transaction transaction=session.beginTransaction();
        try{
            User user=(User)session.load(User.class, new Integer("2"));
            session.delete(user);
            session.flush();
            //提交事务
            transaction.commit();
        }catch(Exception e){
            System.out.println("删除失败");
            e.printStackTrace();
            //如果出现异常,事务回滚
            transaction.rollback();
        }finally{
            HibernateUtil.closeSession(session);
        }

    }

}
时间: 2024-10-13 16:44:47

Java_Web三大框架之Hibernate增删改查的相关文章

SSHE框架整合(增删改查)

1.前期准备:jar包(c3p0.jdbc ,各个框架) web.xml文件:spring的   转码的,和Struts2的过滤器 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee&qu

ssm框架搭建+easyui增删改查实现

闲来无事,看了看别人的博客文档也跟着敲了敲,特地记录下来,方便以后学习: spring版本:4.0.6 mybatis版本:3.2.5 所有jar包打包下载:http://pan.baidu.com/s/1qLEaU 1.项目目录结构 其中,controller包下存放控制层文件,dao下存放各个model类相关的数据库操作接口,entity下放置各种model类,mappers下放置各个dao对应的映射文件,service服务层就不说了,放置各种service接口,impl是其具体实现类. 2

SSM框架搭建+easyui增删改查

转载于:http://www.cnblogs.com/caiya928/p/4851686.html?utm_source=tuicool&utm_medium=referral 闲来无事,看了看别人的博客文档也跟着敲了敲,特地记录下来,方便以后学习: spring版本:4.0.6 mybatis版本:3.2.5 所有jar包打包下载:http://pan.baidu.com/s/1qLEaU 1.项目目录结构 其中,controller包下存放控制层文件,dao下存放各个model类相关的数据

hibernate课程 初探单表映射3-5 hibernate增删改查

本节简介: 1 增删改查写法 2 查询load和查询get方法的区别 3 demo 1 增删改查写法 增加 session.save() 修改 session.update() 删除 session.delete() 查询 session.get()/session.load() 2 查询load和查询get方法的区别 a get 不考虑缓存情况下,get会在调用之后立即向数据库发送sql语句,返回持久化对象.load 是调用后返回代理对象,该代理对象只保存实体对象id,只有使用对象非主键属性才

Java_Web三大框架之Hibernate操作数据库(三)

使用Hibernate操作数据库需要七个步骤: (1)读取并解析配置文件 Configuration conf = newConfiguration().configure(); (2)读取并解析映射信息,创建SessionFactory SessionFactory sf = conf.buildSessionFactory(); (3)打开Session Session session = sf.openSession(); (4)开始一个事务(增删改操作必须,查询操作可选) Transac

Java_Web三大框架之Hibernate 入门(一)

一.Hibernate简介: Hibernate作者——Gavin King Hibernate创始人 < Hibernate in action >作者 EJB 3.0的Entity bean specification的实际领导人(sun任命的领导人是Linda DeMichiel) 参加了XDoclet和Middlegen的开发 2003年9月加入JBoss,全职进行Hibernate开发 二.Hibernate 1.一个开发源代码的对象关系映射框架 2.对JDBC进行了非常轻量级的对象

Java_Web三大框架之Hibernate配置文件(二)

下面介绍一下编写Hibernate的配置文件,使用Hibernate操作数据库. 开始部署:下载需要的jar包 下载Hibernate Hibernate 的官方主页是www.hibernate.org 推荐下载hibernate-distribution-3.3.2.GA-dist.zip Hibernate包目录结构 部署jar包 hibernate3.jar required 目录下的jar 包 Oracle 数据库驱动jar包 第一步:创建实体类和实体映射文件 public class

ci框架——数据库(增删改查)

1:配置数据库(application/config/database.php)修改 $db['default'] = array( 'dsn' => '', 'hostname' => 'localhost', 'username' => '数据库的用户名', 'password' => '数据库密码', 'database' => '数据表名', 'dbdriver' => 'mysqli', 'dbprefix' => '', 'pconnect' =>

hibernate 增删改查小测试

好久没有敲过了,来熟悉下hibernate,做了个小测试. 测试项目结构图,关于导入jar包,可以参考 http://zhuws.blog.51cto.com/11134439/1932652 2.hibernate.cfg.xml 配置 <!DOCTYPE hibernate-configuration PUBLIC         "-//Hibernate/Hibernate Configuration DTD 3.0//EN"         "http://w