eclipse+maven搭建hibernate5测试环境

1环境

Eclipse: Luna Service Release 2 (4.4.2),Eclipse Java EE IDE for Web Developers.Maven:3.5.4

2搭建

2.1创建maven项目

选择Maven的Maven Project项目
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2.2配置maven依赖

修改maven项目向导自动生成的pom.xml,添加依赖项

<dependencies>
  <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>5.2.11.Final</version>
    </dependency> 
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.32</version>
    </dependency> 
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

2.3配置hibernate持久化单元

在路径src/main/resources/META-INF下新建persistence.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" 
 xmlns="http://java.sun.com/xml/ns/persistence" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
 http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd "> 
  <persistence-unit name="myPersistenceUnit"  transaction-type="RESOURCE_LOCAL"> 
   <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
            <property name="hibernate.hbm2ddl.auto" value="create-drop" /> 
            <property name="hibernate.connection.username" value="根据个人实际环境填写数据库连接的用户名" />
            <property name="hibernate.connection.password" value="根据个人实际环境填写数据库连接的密码" />
            <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/jpa?useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=UTC" />
  
            <property name="hibernate.format_sql" value="true" /> 
            <property name="hibernate.use_sql_comments" value="true" /> 
            <property name="hibernate.show_sql" value="true" />
    </properties>
  </persistence-unit>
</persistence>

2.4.编写持久化类

在src/main/java中创建持久化类

package com.tyde.ht002.model;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="tb_message")
public class Message {
 @Id
 @GeneratedValue(strategy=GenerationType.IDENTITY)
 private Long id;
 
 @Column(name="text")
 private String text;
 
 public String getText() {
  return text;
 }
 public void setText(String text) {
  this.text = text;
 }
 
}

2.5.存储和查询测试Junit测试用例编写

在src/test/java中创建测试用例

import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import junit.framework.TestCase;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runners.MethodSorters;
import com.tyde.ht002.model.Message;

@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class TestHibernate {
 public static EntityManagerFactory emf;
 @BeforeClass
 public static void start(){
  System.out.println("start()");
  if(emf==null)
  {
   emf = Persistence.createEntityManagerFactory("myPersistenceUnit"); 
  }
 }
@AfterClass
 public static void stop(){
  System.out.println("stop()");
  if(emf!=null){
   emf.close(); 
  }
 }
 @Test
 public void test001StoreMessage(){ 
  System.out.println("test001StoreMessage()");
  EntityManager em = emf.createEntityManager();
  EntityTransaction tx = em.getTransaction();
  tx.begin();
  Message message =new Message();
  message.setText("hello world!");
  em.persist(message );
  tx.commit();
  em.close(); 
 } 
 @Test
 public void test002QueryMessage(){  
  System.out.println("test002QueryMessage()");
  EntityManager em = emf.createEntityManager();
  EntityTransaction tx = em.getTransaction();
  tx.begin();
  
  List<Message> messages = em.createQuery("select m from Message m").getResultList();
  TestCase.assertEquals(messages.size(),1);
  TestCase.assertEquals(messages.get(0).getText(),"hello world!");
  messages.get(0).setText("haha"); 
   
  tx.commit();
  em.close();
 }


}

3.测试用例运行情况

3.1.执行情况

两个测试用例都通过了
在这里插入图片描述

3.2.执行顺序

运行测试用例,查看控制台打印的方法和sql查询语句,可以看到顺序如下:
1、start()方法,实体管理器工厂的创建

Hibernate:     
    drop table if exists tb_message
Hibernate: 
    
    create table tb_message (
       id bigint not null auto_increment,
        text varchar(255),
        primary key (id)
    ) engine=InnoDB

2、test001StoreMessage()方法

Hibernate: 
    /* insert com.tyde.ht002.model.Message
        */ insert 
        into
            tb_message
            (text) 
        values
            (?)

3、test002QueryMessage()方法,查询,并修改

Hibernate: 
    /* select
        m 
    from
        Message m */ select
            message0_.id as id1_0_,
            message0_.text as text2_0_ 
        from
            tb_message message0_
Hibernate: 
    /* update
        com.tyde.ht002.model.Message */ update
            tb_message 
        set
            text=? 
        where
            id=?

4、stop()方法,实体管理器工厂的关闭

Hibernate: 
    
    drop table if exists tb_message

4.相关知识

4.1.Hibernate配置文件相关属性

属性描述相关值
hibernate.dialect数据库方言如:org.hibernate.dialect.MySQL5;org.hibernate.dialect.OracleDialect;org.hibernate.dialect.SQLServer2005Dialect;org.hibernate.dialect.SQLServer2008Dialect
hibernate.connection.username数据库连接用户名
hibernate.connection.password数据库连接密码
hibernate.connection.url数据库连接url路径
hibernate.format_sql格式化SQL
hibernate.use_sql_commentsSQL语句注释,可以查看SQL语句的起因。
hibernate.show_sql打印SQL语句,方便调试。
hibernate.hbm2ddl.auto数据库表生成方式create 每次加载hibernate会删除上一次的生成的表,再根据model类重新生成新表 ;
create-drop 每次加载hibernate根据model类生成表,但卸载后表就自动删除;
update第一次加载hibernate时会根据model类自动创建表,以后加载时自动更新;
validate每次加载时,验证表结构。

4.2.持久化类相关注解

注解描述
@Entity实体类,默认表的名字就是类名
@Table改变某些默认的映射规则
@Id声明主键
@GeneratedValue主键的生成策略。如:
GenerationType.IDENTITY使用数据库标识列来分配主键,以确保唯一性;
GenerationType.TABLE 使用数据库表来分配主键,以确保唯一性;
GenerationType.SEQUENCE使用数据库序列来分配主键,以确保唯一性;
GenerationType.AUTO根据具体数据库来选择前面几个策略的一种。
@Column属性与数据库字段的映射关系
@Transitent不需要映射的属性

4.3.JUnit 4 相关注解

5.常见问题及其解决

5.1.Junit问题
现象:junit报错junit.framework.AssertionFailedError: No tests found问题
原因:使用junit4.11版本,在写测试用例类时,使用了继承extends TestCase。junit3中使用继承,但junit4不用继承;
解决方式:extends TestCase junit3中使用,但是junit4中不要采用,去掉继承。ENCE使用数据库序列来分配主键,以确保唯一性;GenerationType.AUTO根据具体数据库来选择前面几个策略的一种。

5.2.Hibernate配置解析出错
现象:报错:对实体 “characterEncoding” 的引用必须以 ‘;’ 分隔符结尾
原因:在persistence.xml的文件中"&“未转义。
解决方式:在persistence.xml的文件中,我们需要将”&“做转义”&amp";如:

<property name="hibernate.connection.url" 
value="jdbc:mysql://localhost:3306/jpa?useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=UTC" />

5.3.Mysql查询锁死
现象:测试用例一直执行不成功,通过navicate查询message表状态,标题栏一直显示“正在载入”

在这里插入图片描述
原因:表解锁在navicat for mysql中新建查询SHOW PROCESSLIST,查看当前任务列表,看到有很多waiting state的命令。

在这里插入图片描述
解决方式:结束所有操作当前表的进程Navicat中执行:kill + 进程号其中进程号即(SHOW PROCESSLIST查询结果表显示的ID)) 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 很高兴为您提供关于spark+eclipse+java+maven在windows开发环境搭建及入门实例的详细步骤和代码。 1. 安装Java JDK 首先,您需要在Windows上安装Java JDK。您可以从Oracle官方网站下载Java JDK并按照提示进行安装。 2. 安装Eclipse 接下来,您需要安装Eclipse IDE。您可以从Eclipse官方网站下载Eclipse并按照提示进行安装。 3. 安装Maven 然后,您需要安装Maven。您可以从Maven官方网站下载Maven并按照提示进行安装。 4. 创建Maven项目 在Eclipse中,选择“File” -> “New” -> “Other”,然后选择“Maven” -> “Maven Project”。在“New Maven Project”对话框中,选择“Create a simple project”并单击“Next”。在“New Maven Project”对话框中,输入“Group Id”和“Artifact Id”,然后单击“Finish”。 5. 添加Spark依赖项 在Eclipse中,打开您的Maven项目的pom.xml文件。在<dependencies>标签中,添加以下Spark依赖项: ``` <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.11</artifactId> <version>2.4.5</version> </dependency> ``` 6. 创建Spark应用程序 在Eclipse中,创建一个新的Java类。在该类中,编写您的Spark应用程序代码。以下是一个简单的Spark应用程序示例: ``` import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaSparkContext; public class SparkApp { public static void main(String[] args) { SparkConf conf = new SparkConf().setAppName("SparkApp").setMaster("local"); JavaSparkContext sc = new JavaSparkContext(conf); JavaRDD<String> lines = sc.textFile("input.txt"); JavaRDD<String> words = lines.flatMap(line -> Arrays.asList(line.split(" ")).iterator()); JavaPairRDD<String, Integer> pairs = words.mapToPair(word -> new Tuple2<>(word, 1)); JavaPairRDD<String, Integer> counts = pairs.reduceByKey((a, b) -> a + b); counts.saveAsTextFile("output.txt"); sc.stop(); } } ``` 7. 运行Spark应用程序 在Eclipse中,右键单击您的Spark应用程序类并选择“Run As” -> “Java Application”。您的Spark应用程序将在本地模式下运行。 以上就是关于spark+eclipse+java+maven在windows开发环境搭建及入门实例的详细步骤和代码。希望对您有所帮助! ### 回答2: Spark Eclipse Java Maven Windows 开发环境搭建及入门实例 Spark是一个开源的大数据处理框架,能够快速处理大量的数据。而Eclipse是一款强大的集成开发环境(IDE),可以帮助开发人员更高效地编写代码。Maven是一个项目管理工具,能够快速搭建开发环境。在Windows系统中,搭建Spark Eclipse Java Maven开发环境可分为以下几个步骤: 1. 安装Java 首先访问Oracle官网,下载Java的安装包。安装完成后,打开CMD命令控制台,并输入以下代码: java -version 如果显示Java版本,则表示安装成功。 2. 安装Eclipse 访问Eclipse官网,下载Eclipse的安装包,并解压缩到任意文件夹中。然后启动Eclipse,选择一个工作空间,即可以开始使用。 3. 安装Maven 访问Maven官网,选择下载对应的Maven安装包。将安装包解压缩到任意文件夹中,并配置环境变量。打开CMD命令控制台,并输入以下代码: mvn -version 如果显示Maven版本,则表示安装成功。 4. 创建Spark项目 在Eclipse中,选择“File”->“New”->“Project”,选择“Maven”文件夹下的“Maven Project”,点击“Next”按钮。接着选择“Create a simple project”,填写“Group Id”和“Artifact Id”,并选择“Packaging”为“jar”,点击“Finish”按钮。这样就可以创建一个Maven项目了。 5. 配置Maven 打开项目中的pom.xml文件,添加以下代码: <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.10</artifactId> <version>1.6.1</version> </dependency> 这里引入了Spark的core组件。在Eclipse中,右键单击项目,选择“Run As”->“Maven Install”,即可构建项目。 6. 创建Java类 在src/main/java文件夹下创建一个Java文件,命名为“SparkApp.java”。在文件中编写以下代码: import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaSparkContext; import java.util.Arrays; public class SparkApp { public static void main(String[] args) { SparkConf conf = new SparkConf().setAppName("SparkApp").setMaster("local"); JavaSparkContext sc = new JavaSparkContext(conf); JavaRDD<Integer> rdd = sc.parallelize(Arrays.asList(1, 2, 3, 4, 5)); int sum = rdd.reduce((x, y) -> x + y); System.out.println(sum); } } 这个Spark程序实现了对数组中的数字求和,并输出结果。 7. 运行Spark程序 在Eclipse中,右键单击Java文件,选择“Run As”->“Java Application”,即可运行程序。在控制台中可以看到求和的结果为15。 以上就是Spark Eclipse Java Maven Windows开发环境的搭建及入门示例。后续可以继续深入了解Spark的相关知识,不断提升自己的技能。 ### 回答3: 首先,在Windows上搭建Spark开发环境需要准备以下组件: 1. Java开发环境 2. Spark下载及配置 3. Maven下载及配置 4. Eclipse安装及配置 Java开发环境: 1. 下载Java Development Kit(JDK)并安装 2. 设置JAVA_HOME环境变量 3. 修改PATH环境变量,将JDK的bin目录添加到环境变量中 4. 验证Java安装成功 Spark下载及配置: 1. 下载Spark并解压 2. 打开conf目录下的spark-env.cmd.template文件,将文件名改为spark-env.cmd,并在其中加入如下代码: ``` set SPARK_HOME=<解压后的Spark目录> ``` 3. 验证Spark配置成功 Maven下载及配置: 1. 下载Maven并解压 2. 设置MAVEN_HOME环境变量 3. 修改PATH环境变量,将Maven的bin目录添加到环境变量中 4. 验证Maven安装成功 Eclipse安装及配置: 1. 下载并安装Eclipse 2. 安装Scala插件 3. 安装Maven插件 4. 设定Spark项目需要的依赖项 代码实例: 1. 创建Maven项目 2. 添加Spark依赖项到pom.xml文件中: ``` <dependencies> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.10</artifactId> <version>1.6.0</version> </dependency> </dependencies> ``` 3. 创建Spark Application类并添加代码: ``` import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaSparkContext; public class SimpleApp { public static void main(String[] args) { String logFile = "<文件路径>"; //文件路径 SparkConf conf = new SparkConf().setAppName("Simple Application"); //创建SparkConf对象 JavaSparkContext sc = new JavaSparkContext(conf); //创建SparkContext对象 JavaRDD<String> logData = sc.textFile(logFile).cache(); //读取文件 long numAs = logData.filter(line -> line.contains("a")).count(); //计算包含"a"的行数 long numBs = logData.filter(line -> line.contains("b")).count(); //计算包含"b"的行数 System.out.println("Lines with a: " + numAs + ", lines with b: " + numBs); //输出结果 sc.stop(); //结束SparkContext } } ``` 以上就是Spark Eclipse Java Maven Windows开发环境搭建及入门实例,希望对大家有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值