hibernate配置文件基本组成(hibernate.cfg.xml和hibernate.hbm.xml)

xiaoxiao2021-02-28  48

<?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 元素用于配置Hibernate中的属性 键:值 --> <!-- hibernate.connection.driver_class : 连接数据库的驱动 --> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <!-- hibernate.connection.username : 连接数据库的用户名 --> <property name="hibernate.connection.username">root</property> <!-- hibernate.connection.password : 连接数据库的密码 --> <property name="hibernate.connection.password">123</property> <!-- hibernate.connection.url : 连接数据库的地址,路径 --> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernatedemo</property> <!--------------------------------------------------------------------------------> <!-- show_sql: 操作数据库时,会 向控制台打印sql语句 --> <property name="show_sql">true</property> <!--------------------------------------------------------------------------------> <!-- format_sql: 打印sql语句前,会将sql语句先格式化 --> <property name="format_sql">true</property> <!--------------------------------------------------------------------------------> <!-- hbm2ddl.auto: 生成表结构的策略配置 update(最常用的取值): 如果当前数据库中不存在表结构,那么自动创建表结构. 如果存在表结构,并且表结构与实体一致,那么不做修改 如果存在表结构,并且表结构与实体不一致,那么会修改表结构.会保留原有列. create(很少):无论是否存在表结构.每次启动Hibernate都会重新创建表结构.(数据会丢失) create-drop(极少): 无论是否存在表结构.每次启动Hibernate都会重新创建表结构.每次Hibernate运行结束时,删除表结构. validate(很少):不会自动创建表结构.也不会自动维护表结构.Hibernate只校验表结构. 如果表结构不一致将会抛出异常. --> <property name="hbm2ddl.auto">update</property> <!--------------------------------------------------------------------------------> <!--C3P0是免费的第三方的数据库连接池 <property name="hibernate.connection.provider_class"> org.hibernate.connection.C3P0ConnectionProvider </property> <property name="hibernate.c3p0.max_size">20</property> <property name="hibernate.c3p0.min_size">5</property> <property name="hibernate.c3p0.timeout">50000</property> <property name="hibernate.c3p0.max_statements">100</property> <property name="hibernate.c3p0.idle_test_period">3000</property> <!-- 当连接池耗尽并接到获得连接的请求,则新增加连接的数量 --> <property name="hibernate.c3p0.acquire_increment">2</property> <!-- 是否验证,检查连接 --> <property name="hibernate.c3p0.validate">false</property> --> <!--------------------------------------------------------------------------------> <!-- 数据库方言配置 org.hibernate.dialect.MySQLDialect (选择最短的) --> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <!--------------------------------------------------------------------------------> <!-- hibernate.connection.autocommit: 事务自动提交 --> <property name="hibernate.connection.autocommit">true</property> <!--------------------------------------------------------------------------------> <!-- 将Session与线程绑定=> 只有配置了该配置,才能使用getCurrentSession --> <property name="hibernate.current_session_context_class">thread</property> <!--------------------------------------------------------------------------------> <!-- 引入ORM 映射文件 填写src之后的路径 --> <mapping resource="com/itheima/a_hello/User.hbm.xml"/> <!--如果用的注解就把上面的一句话换成<mapping class="com.how2java.pojo.Product" />--> </session-factory> </hibernate-configuration>

-----------------------------------------------------------------------------------------------------

<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.how2java.pojo"> <class name="Product" table="product_"> <!-- <cache usage="read-only" />--> //引入第三方的线程池的时候要把二级缓存注释掉 <id name="id" column="id"> <generator class="native"> </generator> <!--如果用的是oracle则把上面的generator注释掉 <generator class="native"> <param name="sequence">bigsword.category_sequence</param> </generator> --> </id> <version name="version" column="ver" type="int"></version>//乐观锁的核心机制版本信息控制 <property name="name" /> <property name="price" /> <many-to-one name="category" class="Category" column="cid" /> //多对一设置 //对应Product类中的category(有外键的)属性 //class="Category" 表示对应Category类 //column="cid" 表示指向 category_表的外键 <!--多对一和多对多用set起 <set name="products" <!--cascade="delete"--> lazy="false"> //属于“一”的类中有外键的属性,lazy是延迟加载在一对多的时候会有用,打开为了减少内存开销。 //级联cascade 删除级联,更新级联"save-update" <key column="cid" not-null="false" /> //在所对应的一当中的外键 <one-to-many class="Product" /> //对的属于“多”的属性名 </set> --> </class> </hibernate-mapping>

c3p0多并发时,性能急剧下降。可以用druid

c3p0多并发时,性能急剧下降。推荐用druid
转载请注明原文地址: https://www.6miu.com/read-2627491.html

最新回复(0)