下面介绍一下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); } } }