zoukankan      html  css  js  c++  java
  • 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);
            }
            
        }
        
    }
  • 相关阅读:
    演讲的灵魂:主线
    四种演讲风格应该被摒弃
    思想是演讲的基础
    DML&DDL&DCL
    kafka在windows下安装单机版
    《可复制的领导力》-领导力技术
    《可复制的领导力》-管理者角色
    《可复制的领导力》-沟通视窗
    《可复制的领导力》-领导和管理的区别
    vs code设置终端主题颜色
  • 原文地址:https://www.cnblogs.com/wlx520/p/4684183.html
Copyright © 2011-2022 走看看