京东网站建设的目标,vps wordpress cpu占用过高,品牌建设新,凡科建站可以多人协作编辑吗Hibernate对数据库结构提供了较为完整的封装#xff0c;Hibernate的O/R Mapping实现了POJO 和数据库表之间的映射#xff0c;以及SQL 的自动生成和执行。程序员往往只需定义好了POJO 到数据库表的映射关系#xff0c;即可通过Hibernate 提供的方法完成持久层操作。程序员甚至… Hibernate对数据库结构提供了较为完整的封装Hibernate的O/R Mapping实现了POJO 和数据库表之间的映射以及SQL 的自动生成和执行。程序员往往只需定义好了POJO 到数据库表的映射关系即可通过Hibernate 提供的方法完成持久层操作。程序员甚至不需要对SQL 的熟练掌握 Hibernate/OJB 会根据制定的存储逻辑自动生成对应的SQL 并调用JDBC 接口加以执行。 今天我们就一起对Hibernate的应用初步进行一下学习。 首先公欲善其事必先利其器为了更方便我们书写Hibernate的配置文件我们这里需要为我们的eclipse安装一个Hibernate Tools的插件这样就可以很方便的让我们完成Hibernate的配置文件编写。 这里我采用的是在线安装 1.启动eclipse2.选择Help Install New Software...3.添加如下地址http://download.jboss.org/jbosstools/updates/stable/helios/4.选择性安装hibernate tools在All Jboss tools节点下面 到这里我们的Hibernate Tools就算安装好了接下来我们就可以通过eclipse很方便的生成相应的配置文件 接下来我们创建一个Java工程然后将我们的下载好的hibernate JAR包文件导入这里个人建议大家将这些JAR包添加为一个新的User Liberary方便以后我们在其他项目中调用这里我们现在只是为了初步探究Hibernate的使用这里我们只需要将必要的JAR包文件导入即可 解压我们下载的Hibernate压缩包里面有一个lib文件夹顾名思义这就是我们会用的JAR包文件文件里面有很多子目录我们现在只需要将required文件夹下的JAR包文件导入即可。 导入过hibernate JAR包后一定要记得导入我们的数据库驱动JAR包还有就是为了方便我们测试这里我使用的是Junit单元测试工具需要一并导入相应的JAR包文件。 导入后所有的JAR包文件后我们就可以开始我们的代码编写了首先我们需要创建一个Hibernate配置文件hibernate.cfg.xml 创建好我们的Hibernate的配置文件后打开添加数据库连接驱动地址数据库连接用户名数据库连接密码数据库连接地址数据库方言等等。 ?xml version1.0 encodingUTF-8?
!DOCTYPE hibernate-configuration PUBLIC-//Hibernate/Hibernate Configuration DTD 3.0//ENhttp://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd
hibernate-configurationsession-factory!-- 数据库驱动地址 --property nameconnection.driver_classorg.gjt.mm.mysql.Driver/property!-- 数据连接用户名 --property nameconnection.usernameroot/property!-- 数据库连接密码 --property nameconnection.password123456/property!--设置数据库的连接url:jdbc:mysql://localhost/hibernate,其中localhost表示mysql服务器名称此处为本机hibernate是数据库名--property nameconnection.urljdbc:mysql://localhost:3306/hibernate/property!-- 数据库方言 --property namedialectorg.hibernate.dialect.MySQLDialect/property!-- 控制台打印sql语句 --property nameshow_sqltrue/property!-- 控制台格式化输出sql语句 --property nameformat_sqltrue/property!-- 数据库生产策略 --property namehbm2ddl.autoupdate/property!-- 如果使用的是本地事务jdbc事务 --!-- property namecurrent_session_context_classthread/property --!-- 如果使用的是本地事务JTA事务 --!-- property namecurrent_session_context_classjta/property --/session-factory
/hibernate-configuration 有了Hibernate的配置文件接下来我们就要创建我们的实例对象和数据库映射文件xx.hbm.xml 这里我通过创建学生对象和大家一起熟悉这个过程 /*** 创建一个实体类* author gaoshang*/
public class Student {//不带参数的构造方法public Student(){}private int id;//学生Iprivate String name;//学生姓名private int birthday;//学生出生年月private String home;//学生住宅private Date joinTime;//学生入学时间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 int getBirthday() {return birthday;}public void setBirthday(int birthday) {this.birthday birthday;}public String getHome() {return home;}public void setHome(String home) {this.home home;}public Date getJoinTime() {return joinTime;}public void setJoinTime(Date joinTime) {this.joinTime joinTime;}//学生对象的ToString方法public String toString() {return Student [id id , name name , birthday birthday , home home , joinTime joinTime ];}//带参数的构造方法public Student(int id, String name, int birthday, String home, Date joinTime) {super();this.id id;this.name name;this.birthday birthday;this.home home;this.joinTime joinTime;}} 接下来创建我们的数据库映射文件xx.hbm.xml: 点击next选择我们的实例对象点击finash完成。最后eclispe就可以帮我们的生产一个Student学生类对于的数据库映射文件 ?xml version1.0?
!DOCTYPE hibernate-mapping PUBLIC -//Hibernate/Hibernate Mapping DTD 3.0//EN
http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd
!-- Generated 2017-2-15 14:17:57 by Hibernate Tools 3.5.0.Final --
hibernate-mappingclass namehibernate.Student tableSTUDENTid nameid typeintcolumn nameID /generator classassigned /!-- generator:属性的生成策略 --!-- assigned:通过赋值的形式进行设置 --!-- native:自动生成从0或1开始编号 --!-- uuid:使用uuid进行生成 --/idproperty namename typejava.util.String length10column nameNAME //propertyproperty namebirthday typeintcolumn nameBIRTHDAY //propertyproperty namehome typejava.util.String length10column nameHOME //propertyproperty namejoinTime typejava.util.Datecolumn nameJOINTIME //property/class
/hibernate-mapping 到这里我们的Hibernate配置就算完成了。下面我们来通过使用Junit单元测试工具进行持久化操作。 package hibernate;import java.util.Date;import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;/*** Junit做单元测试时测试方法不能使用private修饰否则会报method initializationerror not found* 解决方法http://www.cnblogs.com/sxdcgaq8080/p/5649819.html* author gaoshang*/
public class StudentTest {private SessionFactory sessionFactory;private Session session;private Transaction transaction;Beforepublic void init(){System.out.println(Junit测试配置);/*** hibernate4.x创建SessionFactory*///创建配置对象//Configuration configraction new Configuration().configure();//创建会话工厂对象回调//ServiceRegistry serviceRegistry new ServiceRegistryBuilder().applySettings(configraction.getProperties()).buildServiceRegistry();//创建会话工厂//sessionFactory configraction.buildSessionFactory(serviceRegistry);/*** hibernate5.x创建SessionFactory*///创建会话工厂对象回调final StandardServiceRegistry serviceRegistry new StandardServiceRegistryBuilder().configure().build();// 使用hibernate.cfg.xml进行配置 //创建会话工程sessionFactory new MetadataSources(serviceRegistry).buildMetadata().buildSessionFactory();//创建session对象session sessionFactory.openSession();//创建事物对象transaction session.beginTransaction();}Afterpublic void close(){System.out.println(Junit测试完成);if(transaction!null)transaction.commit();//提交事物hibernate是事物驱动的只有提交事物才能完成持久化操作if(session!null)session.close();//关闭session对象if(sessionFactory!null)sessionFactory.close();//关闭sessionFactory对象}Testpublic void run(){System.out.println(Junit测试);Student s new Student(1, hpu, 24, 河南, new Date());//创建学生对象session.save(s);//提交持久化操作}} 最后在奉上一个对学生对象进行增删改查的完整操作测试类 package hibernate;import java.util.Date;import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;public class StudentManagerTest {private SessionFactory sessionFactory;private Session session;private Transaction transaction;Afterpublic void close(){if(transaction!null)transaction.commit();if(session!null)session.close();if(sessionFactory!null)sessionFactory.close();}Beforepublic void init(){final StandardServiceRegistry serviceRegistry new StandardServiceRegistryBuilder().configure().build();sessionFactory new MetadataSources(serviceRegistry).buildMetadata().buildSessionFactory();session sessionFactory.openSession();transaction session.beginTransaction();}Testpublic void saveStudent(){Student s new Student(1, 123, 45, 中国, new Date());session.save(s);}Testpublic void updateStudent(){Student s new Student(1, 123, 20, china, new Date());session.update(s);}Testpublic void delStudent(){Student s new Student();s.setId(3);session.delete(s);}/*** get方法当对象不存在时返回NULL*/Testpublic void getStudent(){System.out.println(session.get(Student.class, 6));}/*** load方法当对象不存在是报org.hibernate.ObjectNotFoundException*/Testpublic void loadStudent(){System.out.println(session.load(Student.class, 5));}
} 好了到这里对于Hibernate的初探就和大家分享完毕欢迎留言探讨一起学习。转载于:https://www.cnblogs.com/AndroidJotting/p/6405970.html