• maven+Hibernate+mysql环境搭建


    项目结构图如下

    一,首先是添加依赖pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    
      <modelVersion>4.0.0</modelVersion>
      <packaging>war</packaging>
    
      <name>Hibernate</name>
      <groupId>com.cyf</groupId>
      <artifactId>Hibernate</artifactId>
      <version>1.0-SNAPSHOT</version>
    
      <build>
        <plugins>
          <plugin>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>maven-jetty-plugin</artifactId>
            <version>6.1.7</version>
            <configuration>
              <connectors>
                <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
                  <port>8888</port>
                  <maxIdleTime>30000</maxIdleTime>
                </connector>
              </connectors>
              <webAppSourceDirectory>${project.build.directory}/${pom.artifactId}-${pom.version}</webAppSourceDirectory>
              <contextPath>/</contextPath>
            </configuration>
          </plugin>
        </plugins>
        <!--把xml文件也编译-->
      <resources>
        <resource>
          <directory>src/main/java</directory>
          <includes>
            <include>**/*.xml</include>
          </includes>
        </resource>
        <resource>
          <directory>src/main/resources</directory>
          <includes>
            <include>**/*.xml</include>
          </includes>
        </resource>
      </resources>
      </build>
    
        <!-- 属性配置 -->
        <properties>
          <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>
    
        <dependencies>
          <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.10</version>
            <scope>test</scope>
          </dependency>
    
          <!-- 添加Hibernate依赖 -->
          <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>3.6.5.Final</version>
          </dependency>
    
          <!-- 添加Log4J依赖 -->
          <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.16</version>
          </dependency>
    
          <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.6.1</version>
          </dependency>
    
          <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-nop</artifactId>
            <version>1.6.4</version>
          </dependency>
    
          <!-- 添加javassist -->
          <dependency>
            <groupId>javassist</groupId>
            <artifactId>javassist</artifactId>
            <version>3.11.0.GA</version>
          </dependency>
          <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>RELEASE</version>
          </dependency>
          <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
          </dependency>
          <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.0.8</version>
          </dependency>
        </dependencies>
    
    </project>

    二,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>
            <!-- Database connection settings -->
            <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
            <property name="connection.url">jdbc:mysql://localhost:3306/test</property>
            <property name="connection.username">root</property>
            <property name="connection.password">root</property>
            <!--显示生成的sql语句-->
            <property name="show_sql">true</property>
            <property name="format_sql">true</property>
            <!-- 禁用了javaEE6的bean-validate -->
            <property name="javax.persistence.validation.mode">none</property>
            <property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
            <!-- 即可通过getCurrentSession 获取线程唯一的session -->
            <property name="current_session_context_class">thread</property>
    
            <!--在数据库中自动创建表-->
            <!--<property name="hbm2ddl.auto">update</property>-->
            <!-- 指定ddl的生成方式 -->
            <!--<property name="hibernate.hbm2ddl.auto">create</property>-->
    
            <mapping resource="com/deppon/test03/entity/PersonEntity.hbm.xml"/>
        </session-factory>
    </hibernate-configuration>

    三,PersonEntity.hbm.xml

    <?xml version="1.0" encoding='UTF-8'?>
    <!DOCTYPE hibernate-mapping PUBLIC
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="com.deppon.test03.entity">
        <class name="PersonEntity" table="t_person">
            <id name="id" column="id" type="int">
                <generator class="native"/>
            </id>
         <property name="name" type="string" column="name"/>
        </class>
    </hibernate-mapping>

    四,PersonEntity.java

    package com.deppon.test03.entity;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.Id;
    import javax.persistence.Table;
    
    @Entity
    @Table(name = "t_person")
    public class PersonEntity implements java.io.Serializable {
        private static final long serialVersionUID = -4376187124011546736L;
    
        private Integer id;
        private String name;
    
        @Id
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        @Column(length = 50 , nullable = false , unique = true)
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        @Override
        public String toString() {
            return "PersonEntity [id=" + id + ", name=" + name + "]";
        }
    
    }

    五,HibernateUtil.java

    package com.deppon.test03.util;
    
    import org.apache.log4j.Logger;
    import org.hibernate.HibernateException;
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.Configuration;
    
    public class HibernateUtil {
        /** ThreadLocal Session Map */
        public static final ThreadLocal<Session> SESSIONMAP = new ThreadLocal<Session>();
        private static final SessionFactory sessionFactory;
        private static final Logger LOGGER = Logger.getLogger(HibernateUtil.class);
    
        static {
            try {
                LOGGER.debug("HibernateUti.static - loading cofig");
                sessionFactory = new Configuration().configure("hibernate.cfg.xml")
                        .buildSessionFactory();
                LOGGER.debug("HibernateUtil.static - end");
            } catch (Throwable ex) {
                ex.printStackTrace();
                LOGGER.error("HibernateUti error : ExceptionInInitializerError");
                throw new ExceptionInInitializerError(ex);
            }
        }
    
        private HibernateUtil() {
    
        }
    
        public static Session getSession() throws HibernateException {
            Session session = SESSIONMAP.get();
    
            if(session == null) {
                session = sessionFactory.openSession();
                SESSIONMAP.set(session);
            }
    
            return session;
        }
    
        public static void closeSession() throws HibernateException {
            Session session = SESSIONMAP.get();
            SESSIONMAP.set(null);
    
            if(session != null) {
                session.close();
            }
        }
    
    }

    六,ModelTest.java

    package com.deppon.test03.model;
    
    
    import java.util.List;
    
    import org.hibernate.Session;
    import org.hibernate.Transaction;
    import org.hibernate.cfg.Configuration;
    import org.hibernate.tool.hbm2ddl.SchemaExport;
    import org.junit.Assert;
    import org.junit.Test;
    
    import com.deppon.test03.entity.PersonEntity;
    import com.deppon.test03.util.HibernateUtil;
    
    public class ModelTest {
    
        @Test
        public void testGetSession() {
            Session session = HibernateUtil.getSession();
    
            Assert.assertNotNull(session);
    
            HibernateUtil.closeSession();
        }
    
        @Test
        public void testExport() {
            new SchemaExport(new Configuration().configure()).create(true , true);
        }
    
        @Test
        public void testSave() {
            PersonEntity person = new PersonEntity();
    //        person.setId(2);
            person.setName("ccc");
    
            Session session = HibernateUtil.getSession();
            Transaction tx = session.beginTransaction();
    
            session.save(person);
    
            tx.commit();
            HibernateUtil.closeSession();
        }
    
        @Test
        public void testQuery() {
            Session session = HibernateUtil.getSession();
            session.beginTransaction();
    
            @SuppressWarnings("unchecked")
            List<PersonEntity> personList = session.createQuery("select p from PersonEntity p").list();
    
            for(PersonEntity eachPerson : personList) {
                System.out.println(eachPerson);
            }
    
            session.getTransaction().commit();
            HibernateUtil.closeSession();
        }
    
    }

    七,sql语句

    /*
    Navicat MySQL Data Transfer
    
    Source Server         : test
    Source Server Version : 50717
    Source Host           : localhost:3306
    Source Database       : test
    
    Target Server Type    : MYSQL
    Target Server Version : 50717
    File Encoding         : 65001
    
    Date: 2018-04-07 19:54:35
    */
    
    SET FOREIGN_KEY_CHECKS=0;
    
    -- ----------------------------
    -- Table structure for `t_person`
    -- ----------------------------
    DROP TABLE IF EXISTS `t_person`;
    CREATE TABLE `t_person` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(255) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

     

  • 相关阅读:
    如何学习自动化测试?
    Jenkins中,执行py文件,python找包的路径(找不到自定义包的问题解决)
    数据库的架构设计
    iOS密码框的实现方式
    UISearchController 的大坑
    <第三方>TGRefreshO按照QQ的刷新方式下拉刷新
    关于项目颜色和字体的宏定义
    <iOS 导航栏>第一节:导航栏透明方法实现代码
    <iOS小技巧>UIview指定设置控件圆角
    关于这次KPL春季决赛的感悟
  • 原文地址:https://www.cnblogs.com/feifeicui/p/8734467.html
Copyright © 2020-2023  润新知