环境:
数据库:mariadb 10.2.16 https://downloads.mariadb.org/
配置好maven:见收藏的博文链接 https://www.cnblogs.com/ICE_Inspire/p/9250194.html
官方文档:http://docs.jboss.org/hibernate/orm/5.3/userguide/html_single/Hibernate_User_Guide.html#domain-model
具体过程:
1.新建一个maven project,如图
2.编辑pom.xml ,增加如下内容
1 <dependency> 2 <groupId>org.hibernate</groupId> 3 <artifactId>hibernate-core</artifactId> 4 <version>5.3.2.Final</version> 5 </dependency> 6 <dependency> 7 <groupId>mysql</groupId> 8 <artifactId>mysql-connector-java</artifactId> 9 <version>5.1.4</version>10 </dependency>11 <dependency>12 <groupId>org.hibernate</groupId>13 <artifactId>hibernate-c3p0</artifactId>14 <version>5.3.2.Final</version>15 </dependency>
hibernate-c3p0是为了解决:
WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!)
之后,重新Reimport all maven project,如图
3.建立表 sql如下:
CREATE TABLE IF NOT EXISTS `customer` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
项目里增加对应类:
public class Customer {private Integer id; //主键idprivate String name; //客户姓名/*** @return the id*/public Integer getId() {return id;}/*** @param id the id to set*/public void setId(Integer id) {this.id = id;}/*** @return the name*/public String getName() {return name;}/*** @param name the name to set*/public void setName(String name) {this.name = name;}//重写toString()方法@Overridepublic String toString() {return "Customer [id=" + id + ", name=" + name + "]";}}
4.在src\main下建立文件夹resources,添加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><!-- name代表的是实体类名(根据具体情况更改),table代表的是表名 --><class name="hibernate03.model.Customer" table="customer"><!-- name=id代表的是customer类中属性 column=id代表的是table表中的字段 --><id name="id" column="id"><!-- 主键生成策略 --><generator class="native"/></id><!-- 其他属性使用property标签来映射 --><property name="name" column="name" type="string"/></class></hibernate-mapping>
添加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">org.mariadb.jdbc.Driver</property> --><property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property><property name="hibernate.connection.username">root</property><property name="hibernate.connection.password">123456</property><property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property><property name="hibernate.c3p0.min_size">5</property> <!--在连接池中可用数据库连接的最小数目--><property name="hibernate.c3p0.max_size">30</property> <!--在连接池中所有数据库连接的最大数目--><property name="hibernate.c3p0.time_out">1800</property> <!--设定数据库连接的超时时间--><property name="hibernate.c3p0.max_statement">50</property> <!--可以被缓存的PreparedStatement的最大数目--><mapping resource="Customer.hbm.xml"></mapping></session-factory></hibernate-configuration>
如果红色字体,请重新Reimport all maven project.
5.增加HibernateUtil工具类
import org.hibernate.HibernateException;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;public class HibernateUtil extends Object{private static SessionFactory sessionFactory;static{try{Configuration configuration=new Configuration().configure();sessionFactory = configuration.buildSessionFactory();}catch (Throwable ex){throw new ExceptionInInitializerError(ex);}}private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();public static SessionFactory getSessionFactory() {return sessionFactory;}public static Session getSession() throws HibernateException{Session session = threadLocal.get();if (session == null){session = sessionFactory.openSession();threadLocal.set(session);}return session;}public static void closeSession() throws HibernateException {Session session = threadLocal.get();if (session != null)session.close();threadLocal.set(null);}public static void shutdown(){getSessionFactory().close();}}
6.测试
public static void main( String[] args ){Session session = HibernateUtil.getSession();Transaction tx = session.beginTransaction();try{Customer customer=new Customer();customer.setId(3);customer.setName("ICE_Inspire");session.save(customer);tx.commit();System.out.println("保存成功!");}catch(Exception e){e.printStackTrace();tx.rollback();System.out.println("保存失败!");}finally{HibernateUtil.closeSession();}}
7.显示结果
七月 08, 2018 1:31:11 下午 org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {5.3.2.Final}
七月 08, 2018 1:31:11 下午 org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
七月 08, 2018 1:31:13 下午 org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {5.0.4.Final}
七月 08, 2018 1:31:13 下午 org.hibernate.c3p0.internal.C3P0ConnectionProvider configure
INFO: HHH010002: C3P0 using driver: com.mysql.jdbc.Driver at URL: jdbc:mysql://localhost:3306/test
七月 08, 2018 1:31:13 下午 org.hibernate.c3p0.internal.C3P0ConnectionProvider configure
INFO: HHH10001001: Connection properties: {user=root, password=****}
七月 08, 2018 1:31:13 下午 org.hibernate.c3p0.internal.C3P0ConnectionProvider configure
INFO: HHH10001003: Autocommit mode: false
七月 08, 2018 1:31:13 下午 com.mchange.v2.log.MLog
信息: MLog clients using java 1.4+ standard logging.
七月 08, 2018 1:31:13 下午 com.mchange.v2.c3p0.C3P0Registry
信息: Initializing c3p0-0.9.5.2 [built 08-December-2015 22:06:04 -0800; debug? true; trace: 10]
七月 08, 2018 1:31:13 下午 org.hibernate.c3p0.internal.C3P0ConnectionProvider configure
INFO: HHH10001007: JDBC isolation level: <unknown>
七月 08, 2018 1:31:13 下午 com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource
信息: Initializing c3p0 pool... com.mchange.v2.c3p0.PoolBackedDataSource@39db5c50 [ connectionPoolDataSource -> com.mchange.v2.c3p0.WrapperConnectionPoolDataSource@c4d328da [ acquireIncrement -> 3, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, contextClassLoaderSource -> caller, debugUnreturnedConnectionStackTraces -> false, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, forceSynchronousCheckins -> false, identityToken -> 1hge13a9wxed8vobdm3gs|42530531, idleConnectionTestPeriod -> 0, initialPoolSize -> 5, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 0, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 30, maxStatements -> 0, maxStatementsPerConnection -> 0, minPoolSize -> 5, nestedDataSource -> com.mchange.v2.c3p0.DriverManagerDataSource@1dcb54fb [ description -> null, driverClass -> null, factoryClassLocation -> null, forceUseNamedDriverClass -> false, identityToken -> 1hge13a9wxed8vobdm3gs|6676f6a0, jdbcUrl -> jdbc:mysql://localhost:3306/test, properties -> {user=******, password=******} ], preferredTestQuery -> null, privilegeSpawnedThreads -> false, propertyCycle -> 0, statementCacheNumDeferredCloseThreads -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, usesTraditionalReflectiveProxies -> false; userOverrides: {} ], dataSourceName -> null, extensions -> {}, factoryClassLocation -> null, identityToken -> 1hge13a9wxed8vobdm3gs|7d446ed1, numHelperThreads -> 3 ]
七月 08, 2018 1:31:14 下午 org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQLDialect
七月 08, 2018 1:31:14 下午 org.hibernate.engine.jdbc.env.internal.LobCreatorBuilderImpl useContextualLobCreation
INFO: HHH000423: Disabling contextual LOB creation as JDBC driver reported JDBC version [3] less than 4
保存成功!
Process finished with exit code 0
备注:
如果提示*.hbm.xml not found,检查下target/classes/目录下是否有和main/resources/目录下一样的xml文件.
<build><resources><resource><directory>src/main/resources</directory><includes><include>**/*.xml</include><include>**/*.properties</include></includes></resource></resources></build>
IntelliJ IDEA使用hibernate
原文地址:https://www.cnblogs.com/ICE_Inspire/p/9281337.html