Spring太复杂了,配置这个东西简直就是浪费生命。尤其在没有什么并发压力,随便搞一个RESTful服务
让整个业务跑起来先的情况下,更是么有必要纠结在一堆的XML配置上。显然这么想的人是很多的,于是就
有了Spring Boot。又由于Java 8太墨迹于是有了Kotlin。
数据源使用MySql。通过Spring Boot这个基本不怎么配置的,不怎么微的微框架的Spring Data JPA和Hibernate
来访问数据。
这里使用Gradle来处理依赖。
首先下载官网给的初始项目:
然后跳转到<code>gs-accessing-data-jpa/initial</code>目录下。
用IntelliJ IDEA打开这个项目,选择使用Gradle管理依赖。
之后Gradle会自动下载依赖项。这会花一点时间。你可以去和妹子聊一会儿了。。
如果你觉得这样很麻烦的话,可以建立一个Gradle项目。之后根据上面的例子建立一个目录:
但是无论是用上面的哪种方式,最后都需要在Gradle文件中添加依赖项。这个Gradle文件是<code>build.gradle</code>。添加完依赖项
之后是这样的:
在目录<code>src/main/resources/application.properties</code>下编辑配置文件。默认是没有这个文件和相应的目录的,
自行创建。
无需java的配置类,或者什么XML配置文件。
使用配置项<code>hibernate.ddl-auto = true</code>,项目所需的数据库和相关表、列会自动根据定义的实体类创建。点击
<a href="https://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html/ch03.html#configuration-optional">这里</a>
查看更多配置的说明。
这里定义一个简单地实体类,并声明为JPA实体。这个类的文件存放在目录<code>src\main\java\hello\Entities\</code>下。
这里使用了Kotlin里的data class。data class最大的优点就是省去了定义getter和setter,以及<code>toString()</code>
的时间。这些都已经默认实现。所以,在使用data class的对象的时候直接可以使用<code>name</code>、<code>email</code>当然还有<code>id</code>这样的属性直接访问。
无参数的构造函数是给JPA用的,所以访问级别设定为<code>protected</code>。主构造函数是用来创建和数据库操作相关的对象的。
整个的整个类被<code>@Entity</code>修饰,说明整个类是一个JPA的实体类。<code>@Table</code>声明用来表明整个类对应的数据库表是哪一个。
<code>@Id</code>修饰的<code>User</code>的属性<code>id</code>,会被JPA认为的对象的ID。同时<code>@GeneratedValue(strategy = GenerationType.AUTO)</code>
的修饰说明这个ID是自动生成的。
另外的两个属性<code>name</code>和<code>email</code>被<code>@Column(nullable = false)</code>修饰。说明两个列都是不可以为空的,同时说明两个列的名字
和属性的名字是相同的。如果不同可以这样<code>@Column(nullable = false, name="XXXXXX")</code>。
这个就更加的简单了。JPA会自动在运行时创建数据库需要的增删改查的实现。这个实现可以是根据我们给出的<code>Repository</code>
来实现的。
根据<code>User</code>类,我们来实现一个<code>UserDao</code>(Repository):
泛型的类型参数分别是user和user的id的类型:<code>User</code>, <code>Long</code>。我们可以定义增删改查之外的Query。比如在上面的代码里
。
数据库,Rest服务和书库的连接都已经搞定。那么,我们就来测试一下。
我们在目录<code>src\main\java\hello\Controllers</code>创建一个<code>UserController</code>类来测试和数据库的数据存取。
测试URL可以是这样的:
/delete?id=3, 删除id值为3的user。
返回值的话会报错。
参考文章:
<a href="http://blog.netgloo.com/2014/10/27/using-mysql-in-spring-boot-via-spring-data-jpa-and-hibernate/">http://blog.netgloo.com/2014/10/27/using-mysql-in-spring-boot-via-spring-data-jpa-and-hibernate/</a>
<a href="https://spring.io/guides/gs/accessing-data-jpa/">https://spring.io/guides/gs/accessing-data-jpa/</a>
欢迎加群互相学习,共同进步。QQ群:iOS: 58099570 | Android: 572064792 | Nodejs:329118122 做人要厚道,转载请注明出处!
本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/sunshine-anycall/p/5263511.html,如需转载请自行联系原作者