蜘蛛从网站哪里抓取,邢台同城,做民宿注册的网站,wordpress首页调用页面文章的内容首先要导入包#xff0c;将下载的hibernate所有required包导入#xff0c;将下载的hibernate用来写log的slf4j的api和nopjar包导入#xff0c;将下载的mysql链接引擎jar包导入。 然后新建java工程。 先告诉hiernate怎么连数据库#xff1a;在hibernate默认识别目录src根目录…首先要导入包将下载的hibernate所有required包导入将下载的hibernate用来写log的slf4j的api和nopjar包导入将下载的mysql链接引擎jar包导入。 然后新建java工程。 先告诉hiernate怎么连数据库在hibernate默认识别目录src根目录下以默认hibernate配置文件名hibernate.cfg.xml建立xml都采用默认可以省去在代码中书写路径和名字的麻烦 ?xml version1.0 encodingutf-8? !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 !-- Database connection settings -- property nameconnection.driver_classcom.mysql.jdbc.Driver/property property nameconnection.urljdbc:mysql://localhost:3306/hibernate/property property nameconnection.usernameroot/property property nameconnection.passwordmysql/property !-- property nameconnection.driver_classoracle.jdbc.driver.OracleDriver/property property nameconnection.urljdbc:oracle:thin:localhost:1521:SXT/property property nameconnection.usernamescott/property property nameconnection.passwordtiger/property property namedialectorg.hibernate.dialect.OracleDialect/property -- !-- JDBC connection pool (use the built-in) -- !-- property nameconnection.pool_size1/property 数据库连接池大小 -- !-- SQL dialect sql语句方言-- property namedialectorg.hibernate.dialect.MySQLDialect/property !-- Enable Hibernates automatic session context management -- !-- property namecurrent_session_context_classthread/property 指定getCurrentSession的上下文如果不指定只能用openSession。有thread当前线程jtamanagedjee、EJB中使用applicationserver且要手工管理currentSession手工管理事务的时候要用该值custom.class自定义class管理currentSession jtajava transaction apijava中一种用于管理事务的api和实现了该api的应用服务器的JTATransactionManager结合使用可以处理分布存储。 -- !-- Disable the second-level cache -- property namecache.provider_classorg.hibernate.cache.internal.NoCacheProvider/property !-- Echo all executed SQL to stdout -- property nameshow_sqltrue/property property nameformat _sqltrue/property !-- Drop and re-create the database schema on startup -- !-- property namehbm2ddl.autoupdate/property -- mapping resourcecom/test/hibernate/model/Student.hbm.xml/ mapping classcom.test.hibernate.model.Teacher/ /session-factory /hibernate-configuration 然后告诉hibernate数据库和model的映射关系也采用默认目录和命名方式 在model这里是Student类所在目录下新建Student.hbm.xml名字要和类名一致对于Teacher类因为使用了注解所以不需要也可以看出来使用注解相对来说比较方便。 配置文件中如果表名和类名不一致也可以指定表名参见本文末尾处的一段配置 ?xml version1.0? !DOCTYPE hibernate-mapping PUBLIC -//Hibernate/Hibernate Mapping DTD 3.0//EN http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd hibernate-mapping packagecom.test.hibernate.model class nameStudent id nameid/id property namename/property property nameage/property /class /hibernate-mapping 数据库也一致只有三列其中id是主键。 指定id生成策略示例代码 id nameid generator classuuid/generator !-- 指定数据库该主键生成策略为uuiduuid要求主键必须是个字符串才能采用uuid全局唯一id。指定生成策略后就不需要手动设置主键了。 还可以设成nativeint型会根据数据库本地自动生成。 关于生成策略更多内容参见hibernate API 5.1.2.2.1. Various additional generators -- /id Student类 package com.test.hibernate.model; public class Student { private int id; private String name; private int age; 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 getAge() { return age; } public void setAge(int age) { this.age age; } } Teacher类 package com.test.hibernate.model; import javax.persistence.*; import java.util.Date; Entity //实体类 表示和数据库内容一一对应无需额外书写映射关系xml //Table(name “_Teacher”) 如果表名和类名不一致不区分大小写可以用这个注解来标明表名 public class Teacher { private int id; private String name; private String title; private Date birthDate; Id //主键 //Basic //对于和数据对应的字段可以写相当于加了 public int getId() { return id; } public void setId(int id) { this.id id; } Column(name”_name”)//字段名和属性名不对应时可以这样指定对应的属性名 public String getName() { return name; } public void setName(String name) { this.name name; } //如果不想往数据库中存放可以加个注解,透明的—Transient public String getTitle() { return title; } public void setTitle(String title) { this.title title; } //可以只保存录入时间的日期部分或者时间部分Temporal(TemporalType.DATE)这样数据库中就会用DATE类型来保存数据默认是DATETIME日期时间一起保存 public Date getBirthDate(){ return birthDate; } public void setBirthDate(Date birthDate){ this.birthDatebirthDate; } } 关于用注解的方式指定主键生成策略 GeneratedValue 默认策略AUTO相当于xml中的native会使数据库根据本地策略自动生成如果是mysql会auto increament如果是oracle则sequence。 GeneratedValuestrategy GenerationType.IDENTITY GeneratedValuestrategy GenerationType.SEQUENCE SequenceGenerator(namethissequencegeneratorname,sequenceNameaa)定义一个generator前者是它自己的名字后者是它采用的数据库中的生成器的名字,定义要写在Entity下面类上面。下面这一行是采用该generator GeneratedValuestrategy GenerationType.SEQUENCE,generatorthissequencegeneratorname Entityjavax.persistence.TableGenerator( nameTeacher_GEN, tableGENERATOR_TABLE, pkColumnName pk_key, valueColumnName pk_value, pkColumnValueTeacher, allocationSize1 )//表生成器可以跨数据库平台 Id GeneratedValue(strategyGenerationType.TABLE, generatorTeacher_GEN) public int getId() { return id; } 然后就可以写测试类了 import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuilder; import com.test.hibernate.model.Student; public class StudentTest { public static void main(String args[]){ Student s new Student(); s.setId(1); s.setName(s2); s.setAge(1); Configuration cfg new Configuration(); //SessionFactory sf cfg.configure().buildSessionFactory(); cfg.configure();//解析所有hibernate的配置xml不指定参数就会去找默认目录下的xml ServiceRegistry sr new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry(); SessionFactory sf cfg.buildSessionFactory(sr);//生成session工厂相当于产生数据库连connection的工厂 Session session sf.openSession();//相当于数据库的一个connection session.beginTransaction(); //session.save(s); //session.delete(s); session.update(s); session.getTransaction().commit(); session.close();//关闭connection sf.close();//关闭工厂相当于关闭了数据连接池 } } import org.hibernate.Session; import org.hibernate.SessionFactory; //import org.hibernate.cfg.AnnotationConfiguration;过时了该类的所有内容都已经被包含在Configuration类中。 import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuilder; import com.test.hibernate.model.Teacher; public class TeacherTest { public static void main(String args[]){ Teacher t new Teacher(); t.setId(2); t.setName(t3); t.setTitle(中级); //Configuration cfg new AnnotationConfiguration(); Configuration cfg new Configuration(); //SessionFactory sf cfg.configure().buildSessionFactory(); cfg.configure();//解析所有hibernate的配置xml不指定参数就会去找默认目录下的xml ServiceRegistry sr new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry(); SessionFactory sf cfg.buildSessionFactory(sr);//生成session工厂相当于产生数据库连connection的工厂 Session session sf.openSession();//相当于数据库的一个connection session.beginTransaction(); session.save(t); session.getTransaction().commit(); session.close();//关闭connection sf.close();//关闭工厂相当于关闭了数据连接池 } } class配置参考例子 class nameClassName tabletableName discriminator-valuediscriminator_value mutabletrue|false schemaowner catalogcatalog proxyProxyInterface dynamic-updatetrue|false dynamic-inserttrue|false select-before-updatetrue|false polymorphismimplicit|explicit wherearbitrary sql where condition persisterPersisterClass batch-sizeN optimistic-locknone|version|dirty|all lazytrue|false entity-nameEntityName checkarbitrary sql check condition rowidrowid subselectSQL expression abstracttrue|false nodeelement-name /转载于:https://www.cnblogs.com/flying607/p/3474223.html