2
2
.
.
5
5
.
.
1
1
0
0
@
@
T
T
r
r
a
a
n
n
s
s
i
i
e
e
n
n
t
t
I
I
n
n
f
f
o
o
JPA's @Transient Annotation specifies that Property should not be stored in the DB (non-persistent).
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
MyController
http://localhost:8080/addPerson
addPerson()
PersonEntity
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
PersonEntity.java
package com.ivoronline.springboot.entity_annotation_transient.entities;
import javax.persistence.*;
@Entity
public class PersonEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Integer id;
public String name;
public Integer age;
@Transient
public String message;
}
PersonRepository.java
package com.ivoronline.springboot.entity_annotation_transient.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_transient.controllers;
import com.ivoronline.springboot.entity_annotation_transient.entities.PersonEntity;
import com.ivoronline.springboot.entity_annotation_transient.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;
personEntity.message = "John is 20 years old";
//STORE ENTITY OBJECT INTO DB
personRepository.save(personEntity);
//RETURN SOMETHING TO BROWSER
return personEntity.message;
}
}
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>