在Maven中有三大模块,分别是依赖、仓库、生命周期和插件,我们接下来下来介绍下依赖,为了方便起见我们还是以案例来说:

1、首先建立一个maven项目,这里我建立一个user的项目

2、接下来我们在这个项目中要使用到hibernate框架,此时就要在此项目中加入hibernate的支持,而之前我们讲到maven会自动的为我们加入jar包,但是前提是我们要找到怎么样编写hibernate的引用,如何编写呢?接下来我们就要牵涉到依赖的查询,在maven中所有的依赖都是通过坐标来保存的(GAV-->groupId,artifactId,version),在网上有一些仓库为我们提供了一下项目的坐标,比如:http://mvnrepository.com/,http://www.sonatype.org/nexus/等等,这里我们就使用mvnrepository仓库了,在里面搜索hibernate就能找到对应的hibernate包,如下:

如图,只需要将其中的dependency拷贝到当前项目的pom.xml中即可,如下:

 <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.2.5.Final</version>
</dependency>
</dependencies>

保存后,maven就会首先检查本地仓库中是否有hibernate的支持包,如果没有的话则会到网上进行下载,这个过程可能会稍微有点慢!

这里附上hibernate的配置文件和数据库的创建脚本:

 <?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
<session-factory>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="connection.url">
jdbc:mysql://localhost:3306/user
</property>
<property name="connection.username">root</property>
<property name="connection.password">wangzhen</property>
<property name="connection.driver_class">
org.gjt.mm.mysql.Driver
</property>
<property name="myeclipse.connection.profile">mysql</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property> <mapping class="com.lq.wangzhen.user.vo.User"/>
</session-factory>
</hibernate-configuration>

数据库user的创建脚本:

3、完成后我们在src下再建立一个文件夹,src/main/resources用来保存hibernate的资源文件和log4j的日志文件,这样的话,我们还要加入log4j的jar包,我们继续到仓库里面搜索log4j对应的依赖坐标。

继续在pom.xml中加入对log4j的支持:

 <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.2.5.Final</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>

4、因为要进行数据库的连接,所以这里还要加入对mysql数据库的依赖:

继续在pom.xml中加入对mysql的依赖支持:

 <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.2.5.Final</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.26</version>
</dependency>
</dependencies>

5、编写vo类User:

 package com.lq.wangzhen.user.vo;

 import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table; @Entity
@Table(name = "t_user")
public class User { private Integer id;
private String username;
private String password;
private String email; @Id
@GeneratedValue
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
} }

对应的表t_user的创建脚本:

 create table t_user
(
id int primary key auto_increment,
username varchar(100),
password varchar(32),
email varchar(100)
);

6、编写测试类,在编写测试类之前我们要首先编写Hibernate的一个工具类,用来获得Session对象:

 package com.lq.wangzhen.user.vo;

 import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration; public class HibernateUntil { private static SessionFactory factory = null; static{ factory = new Configuration().configure().buildSessionFactory();
} public static Session openSession(){
return factory.openSession();
}
}

然后在编写测试类:

 package com.lq.wangzhen.test;

 import org.hibernate.Session;
import org.junit.Assert;
import org.junit.Test; import com.lq.wangzhen.user.vo.HibernateUntil;
import com.lq.wangzhen.user.vo.User; public class TestUser { @Test
public void testAdd(){
Session session = HibernateUntil.openSession();
session.beginTransaction(); User u = new User();
u.setUsername("zhangsan");
u.setPassword("123456");
u.setEmail("admin@admin.com");
session.save(u);
Assert.assertTrue(u.getId()>0);
session.getTransaction().commit();
}
}

通过myeclipse在pom.xml右键点击,运行Maven test,如图:

此时我们查看数据库,就可以看到数据库中多了一条数据:

然后运行maven install就可以进行程序的打包操作了:

【Maven实战】依赖的范围的更多相关文章

  1. Maven实战(六)依赖

    我们项目中用到的jar包可以通过依赖的方式引入,构建项目的时候从Maven仓库下载即可. 1. 依赖配置    依赖可以声明如下: <project> ... <dependenci ...

  2. (转)Maven实战(六)依赖

    我们项目中用到的jar包可以通过依赖的方式引入,构建项目的时候从Maven仓库下载即可. 1. 依赖配置    依赖可以声明如下: <project> ... <dependenci ...

  3. Maven实战(十一)eclipse下载依赖jar包出问题

    问题描述 在pom.xml中配置了依赖,但是提示依赖不成功,或在本地仓库找不到相关依赖 大致错误如下: ArtifactDescriptorException: Failed to read arti ...

  4. [Maven实战](9)传递性依赖

    了解Spring的朋友都知道.创建一个Spring Framework项目都须要依赖什么样的Jar包.假设不使用Maven,那么在项目中就须要手动下载相关的依赖.因为Spring Framework又 ...

  5. Maven实战读书笔记(三):Maven依赖

    3.1 依赖的配置 一个依赖声明可以包含下面元素: <dependencies> <dependency> <groupId></groupId> &l ...

  6. Maven实战07_依赖

    1:依赖声明 <project> ... <dependencies> <dependency> <groupId>...</groupId> ...

  7. Maven实战:Maven生命周期

    前言 之前有写过一篇文章Maven实战,介绍了Maven的一些基本概念,以及对于一个初学者而言的Maven基础知识,当时在我看来掌握了这些基本是够用的. 随着工作的深入,越来越感觉对于Maven的理解 ...

  8. 学习笔记——Maven实战(四)基于Maven的持续集成实践

    Martin的<持续集成> 相信很多读者和我一样,最早接触到持续集成的概念是来自Martin的著名文章<持续集成>,该文最早发布于2000年9月,之后在2006年进行了一次修订 ...

  9. 学习笔记——Maven实战(六)Gradle,构建工具的未来?

    Maven面临的挑战 软件行业新旧交替的速度之快往往令人咂舌,不用多少时间,你就会发现曾经大红大紫的技术已经成为了昨日黄花,当然,Maven也不会例外.虽然目前它基本上是Java构建的事实标准,但我们 ...

  10. 学习笔记——Maven实战(七)常用Maven插件介绍(上)

    我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源代码是由maven-compiler-plugin完成的.进一步说,每个任务对应了 ...

随机推荐

  1. linux —— 学习笔记(汇总)

    笔记目录:一.系统知识 和 基本概念                    二.常用操作                   三.系统管理(内存.设备.服务等管理)                   ...

  2. pull解析和sax解析的差别

    假设在一个XML文档中我们仅仅须要前面一部分数据.可是使用SAX方式或DOM方式会对整个文档进行解析,虽然XML文档中后面的大部分数据我们事实上都不须要解析.因此这样实际上就浪费了处理资源. 使用PU ...

  3. 开始我的 JNI 入门吧

    JNI (java native interface)   java本地开发接口(一句话 : 就是1个 adapter). JNI  是一个协议  -   是用来让   java代码和C,C++ 代码 ...

  4. 在 Java 中高效使用锁的技巧--转载

    竞争锁是造成多线程应用程序性能瓶颈的主要原因 区分竞争锁和非竞争锁对性能的影响非常重要.如果一个锁自始至终只被一个线程使用,那么 JVM 有能力优化它带来的绝大部分损耗.如果一个锁被多个线程使用过,但 ...

  5. 从零开始学习jquery (一)

    一.jquery是什么 Jquery是继prototype之后又一个优秀的Javascript库.它是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF 1.5+, Safar ...

  6. 浅谈Android架构之MVP,MVVM

    概述 MVP(Model-View-Presenter)是传统MVC(Model-View-Controller)在Android开发上的一种变种.进化模式.主要用来隔离UI.UI逻辑和业务逻辑.数据 ...

  7. Ubuntu常见问题

    1.  Ubuntu16.04安装完国际版QQ后发现用不了搜狗输入法      sudo mv /usr/bin/ibus-daemon /usr/bin/ibus-daemon.bak

  8. 封装对Cookie和Session设置或取值的类

    public class CookieHelper : System.Web.SessionState.IReadOnlySessionState    { public static void Se ...

  9. HTML5 离线缓存

    离线资源缓存  为了能够让用户在离线状态下继续访问 Web 应用,开发者需要提供一个 cache manifest 文件.这个文件中列出了所有需要在离线状态下使用的资源,浏览器会把这些资源缓存到本地. ...

  10. WebSocket协议

    websocket 简介 (2013-04-09 15:39:28) 转载▼   分类: websocket 一 WebSocket是html5新增加的一种通信协议,目前流行的浏览器都支持这个协议,例 ...