2
2
.
.
5
5
.
.
9
9
@
@
C
C
o
o
l
l
u
u
m
m
n
n
I
I
n
n
f
f
o
o
This tutorial shows how to use JPA's @Column to explicitly specify Column Name (by default Property Name is used).
JPA Annotations can only be used on SQL DBs (H2, MySQL, Oracle) and can't be used on NoSQL DBs (MongoDB).
Application Schema [Results]
Spring Boot Starters
GROUP
DEPENDENCY
DESCRIPTION
Web
Spring Web
Enables @Controller, @RequestMapping and Tomcat Server
SQL
Spring Data JPA
Enables @Entity and @Id
SQL
H2 Database
Enables in-memory H2 DB
P
P
r
r
o
o
c
c
e
e
d
d
u
u
r
r
e
e
Create Project: entity_entity (add Spring Boot Starters from the table)
Edit: application.properties (specify H2 DB name & enable H2 Web Console)
Create Package: entities (inside main package)
– Create Class: PersonEntity.java (inside package entities)
Create Package: repositories (inside main package)
– Create Interface: PersonRepository.java (inside package repositories)
Create Package: controllers (inside main package)
– Create Class: MyController.java (inside package controllers)
application.properties
# H2 DATABASE
spring.datasource.url = jdbc:h2:mem:testdb
spring.h2.console.enabled = true
MyController
http://localhost:8080/addPerson
addPerson()
PersonEntity
PersonEntity.java
package com.ivoronline.springboot.entity_annotation_column.entities;
import javax.persistence.*;
@Entity
public class PersonEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Integer id;
@Column(name="PERSON_NAME")
public String name;
public Integer age;
}
PersonRepository.java
package com.ivoronline.springboot.entity_annotation_column.repositories;
import com.ivoronline.entity_entity.entities.PersonEntity;
import org.springframework.data.repository.CrudRepository;
public interface PersonRepository extends CrudRepository<PersonEntity, Integer> { }
MyController.java
package com.ivoronline.springboot.entity_annotation_column.controllers;
import com.ivoronline.entity_entity.entities.PersonEntity;
import com.ivoronline.entity_entity.repositories.PersonRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class MyController {
@Autowired
PersonRepository personRepository;
@ResponseBody
@RequestMapping("/addPerson")
public String addPerson() {
//CREATE ENTITY OBJECT
PersonEntity personEntity = new PersonEntity();
personEntity.name = "John";
personEntity.age = 20;
//STORE ENTITY OBJECT INTO DB
personRepository.save(personEntity);
//RETURN SOMETHING TO BROWSER
return personEntity.name + " was stored into DB";
}
}
R
R
e
e
s
s
u
u
l
l
t
t
s
s
http://localhost:8080/addPerson
http://localhost:8080/h2-console - Connect - PERSON_ENTITY - Run (Open H2 Console)
Application Structure
pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>