hibernate 快速入门
来源:互联网 发布:温暖的句子 知乎 编辑:程序博客网 时间:2024/05/22 15:26
首先导入hibernate 需要到的jar包
然后在src下面配置hibernate.cfg.xml,这里面是连接数据库需要的信息
<?xml version="1.0" encoding="UTF-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> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql:///hibernate1</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">root</property> <!--数据库方言--> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property><!-- 以上是必输属性,下面是可选属性 --> <!--DDL策略 create:表示启动的时候先drop,再create (测试人员 准备标准测试数据) create-drop: 也表示创建,只不过再系统关闭前执行一下drop (测试程序是否正确) update: 这个操作启动的时候会去检查表结构是否一致,如果不一致就会更新表结构 (可以建表,更新表结构【只能加】,比如将映射文件中的name改为cname,这时候会在表中给我们增加一列cname,而不是将name改为cname) validate: 启动时验证现有表与你配置的hibernate是否一致,如果不一致就抛出异常,并不做更新 在产品开发中 update 和 validate 使用较多,create、create-drop在测试环境下用的较多--> <property name="hibernate.hbm2ddl.auto">update</property> <property name="hibernate.show_sql">true</property> <!-- <property name="hibernate.format_sql">true</property> --> <!-- 事务是否自动提交 * 用于解决 没有开启事务的操作时,事务如何自动处理 注意如果自己手动开启了事务,没有commit,这个也不会提交到数据库 * 默认事务 自动回滚 --> <property name="hibernate.connection.autocommit">true</property> <!-- 数据库连接池 --> <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property> <!--在连接池中可用的数据库连接的最少数目 --> <property name="c3p0.min_size">5</property> <!--在连接池中所有数据库连接的最大数目 --> <property name="c3p0.max_size">20</property> <!--设定数据库连接的过期时间,以秒为单位,如果连接池中的某个数据库连接处于空闲状态的时间超过了timeout时间,就会从连接池中清除 --> <property name="c3p0.timeout">120</property> <!--每3000秒检查所有连接池中的空闲连接 以秒为单位--> <property name="c3p0.idle_test_period">3000</property> <!-- 配置映射文件 --> <mapping resource="com/zz/entity/Customer.hbm.xml"/> </session-factory></hibernate-configuration>
然后是Customer.hbm.xml文件:配置表的映射信息
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping> <!--类和表之间的映射 --> <class catalog="hibernate1" table="customer" name="com.zz.entity.Customer"> <!-- 主键 --> <id name="id" column="id" type="int"> <!--主键生成策略 常见的主键生成策略:1.increament hibernate以递增的方式为代理主键赋值原理: select max(id) ,insert max(id)+1自动建表:使用increment创建的数据库表没有自动增长优点:通过hibernate内部完成,可以跨平台缺点:高并发时访问,可能会造成主键冲突问题使用debug模拟并发2.identity (无线程问题)----mysql 以底层数据库负责生成表示符,它要求底层数据库把主键定义为自动增长字段类型原理:依赖数据库内部实现,与hibernate无关自动建表:使用increment创建的数据库表没有自动增长优点:无需程序处理,数据库自己完成主键增长缺点:mysql支持主键自增长,oracle不支持3.sequence ---Oraclesequence 标识符生成器利用底层数据库提供的序列来完成标识符原理:依赖数据库序列支持,和hibernate程序无关Oracle 支持序列,mysql不支持序列序列原理:create sequence customer_seqinsert into customer(id) values(customer_seq.nextval);4.nativenative标识符生成器依据底层数据库对自动生成标识符的支持能力,来选择使用identity,sequence或hilo标识符生成器。mysql 自动选择identityoracle 自动选择sequence5.uuid uuid的主键生成 采用String类型主键随机生成32位字符串6.assigned必须用户在程序中指定,无法自动生成--> <generator class="identity"></generator> </id> <!-- 普通属性 --> <property name="name" column="name" type="java.lang.String"/> <property name="age" column="age" type="int"/> <property name="city"> <column name="city" sql-type="varchar(20)"></column> </property> </class></hibernate-mapping>
注意这两个配置文件里面引入的dtd文件是不一样的,具体的可以从下载的jar包hibernate3.jar下面有两个相关文件中复制
junit测试一下
@Test public void testSave(){ // 实例化配置对象,加载配置文件 hibernate.cfg.xml Configuration configuration = new Configuration().configure(); // 创建会话连接工厂 SessionFactory sessionFactory = configuration.buildSessionFactory(); // 创建会话 Session session = sessionFactory.openSession(); // 开启事务 Transaction transaction = session.beginTransaction(); //这里可以编写hibernate操作代码逻辑 (********************************************************) Customer c1 = new Customer(); c1.setAge(20); c1.setCity("浙江杭州"); c1.setName("张三丰"); session.save(c1); // 提交事务,释放资源 transaction.commit(); session.close(); sessionFactory.close(); }
阅读全文
0 0
- Hibernate快速入门
- Hibernate 快速入门
- Hibernate快速入门
- Hibernate快速入门
- Hibernate快速入门
- Hibernate快速入门
- hibernate 快速入门
- Hibernate快速入门
- Hibernate快速入门
- Hibernate快速入门
- hibernate快速入门实例
- Hibernate快速入门
- Hibernate快速入门
- hibernate快速入门案例
- hibernate快速入门
- Hibernate快速入门
- hibernate 快速入门
- Hibernate快速入门
- DPDK Ring Library
- MySQL高级 之 事务(ACID特性 与 隔离级别)
- CentOS7的firewall和安装iptables
- java验证码识别--3
- Python 编码的前世今生
- hibernate 快速入门
- 中国大数据和人工智能技术大会DACon2017将于7月在上海举行!
- 隐藏响应头apache和php版本号
- win10系统安装了多个版本的JDK如何切换
- windows编译生成protobuf库(使用minGW编译)
- struts2之Tabbedpanel标签实现选项卡
- Samsung ARTIK 530 GPIO PIN programming
- AS上传资源的时候,不需要的文件夹
- DWR3 学习笔记