Updating
an entity is two-step process.
a.  
Get
the entity
b.  
Update
specific fields of the entity
c.   
Use
save() method to persist updated entity.
Example
Employee emp1 = Employee.builder().firstName("Ram").lastName("Gurram").build(); Employee persistedEntity = employeeRepository.save(emp1); persistedEntity.setFirstName("Venkata Ramarao"); persistedEntity.setLastName("Bhadri"); employeeRepository.save(persistedEntity);
Find the
below working application.
Step 1: Create model class Employee.
package com.sample.app.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 = "employee") public class Employee { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "employee_id") private int id; @Column(name = "first_name") private String firstName; @Column(name = "last_name") private String lastName; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public static EmployeeBuilder builder() { return new EmployeeBuilder(); } public static class EmployeeBuilder { private Employee emp; public EmployeeBuilder() { emp = new Employee(); } public EmployeeBuilder firstName(String firstName) { emp.setFirstName(firstName); return this; } public EmployeeBuilder lastName(String lastName) { emp.setLastName(lastName); return this; } public Employee build() { return emp; } } @Override public String toString() { return "Employee [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + "]"; } }
Step 2:
Create
EmployeeRepository interface like below.
package com.sample.app.repository; import org.springframework.data.repository.CrudRepository; import com.sample.app.model.Employee; public interface EmployeeRepository extends CrudRepository<Employee, Integer> { }
Step 3:
Create
‘application.properties’ file under src/main/resources.
logging.level.root=WARN logging.level.org.hibernate=ERROR ## H2 specific properties spring.h2.console.enabled=true spring.h2.console.path=/h2 spring.datasource.url=jdbc:h2:file:~/db/myOrg.db;DB_CLOSE_ON_EXIT=FALSE;DB_CLOSE_DELAY=-1; spring.datasource.username=krishna spring.datasource.password=password123 spring.datasource.driverClassName=org.h2.Driver ## JPA specific properties # Creates the schema, destroying previous data. spring.jpa.hibernate.ddl-auto=create spring.jpa.database-platform=org.hibernate.dialect.H2Dialect spring.jpa.show-sql=true spring.jpa.properties.hibernate.format_sql=true ## Database connection pooling properties # Number of ms to wait before throwing an exception if no connection is available. spring.datasource.max-wait=10000 # Maximum number of active connections that can be allocated from this pool at the same time. spring.datasource.tomcat.max-active=10 spring.datasource.tomcat.max-idle=5 spring.datasource.tomcat.min-idle=3
Step 4:
Define App.java class
like below.
package com.sample.app; import java.util.Optional; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; import com.sample.app.model.Employee; import com.sample.app.repository.EmployeeRepository; @SpringBootApplication public class App { private static void printEmployee(Employee emp) { System.out.println("------------------------------"); System.out.println("Id : " + emp.getId()); System.out.println("firstName : " + emp.getFirstName()); System.out.println("lastName : " + emp.getLastName()); System.out.println("------------------------------"); } public static void main(String args[]) { SpringApplication.run(App.class, args); } @Bean public CommandLineRunner demo(EmployeeRepository employeeRepository) { return (args) -> { Employee emp1 = Employee.builder().firstName("Ram").lastName("Gurram").build(); Employee persistedEntity = employeeRepository.save(emp1); printEmployee(persistedEntity); Optional<Employee> empOpt = employeeRepository.findById(persistedEntity.getId()); if (!empOpt.isPresent()) { System.out.println("Employee not exist with given id"); return; } Employee tempEmp = empOpt.get(); tempEmp.setFirstName("Venkata Ramarao"); tempEmp.setLastName("Bhadri"); persistedEntity = employeeRepository.save(tempEmp); printEmployee(persistedEntity); }; } }
Total
project structure looks like below.
Run App.java, you can see
below messages in console.
  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.6.RELEASE)
Hibernate: 
    
    drop table employee if exists
Hibernate: 
    
    drop sequence if exists hibernate_sequence
Hibernate: create sequence hibernate_sequence start with 1 increment by 1
Hibernate: 
    
    create table employee (
       employee_id integer not null,
        first_name varchar(255),
        last_name varchar(255),
        primary key (employee_id)
    )
Hibernate: 
    call next value for hibernate_sequence
Hibernate: 
    insert 
    into
        employee
        (first_name, last_name, employee_id) 
    values
        (?, ?, ?)
------------------------------
Id : 1
firstName : Ram
lastName : Gurram
------------------------------
Hibernate: 
    select
        employee0_.employee_id as employee1_0_0_,
        employee0_.first_name as first_na2_0_0_,
        employee0_.last_name as last_nam3_0_0_ 
    from
        employee employee0_ 
    where
        employee0_.employee_id=?
Hibernate: 
    select
        employee0_.employee_id as employee1_0_0_,
        employee0_.first_name as first_na2_0_0_,
        employee0_.last_name as last_nam3_0_0_ 
    from
        employee employee0_ 
    where
        employee0_.employee_id=?
Hibernate: 
    update
        employee 
    set
        first_name=?,
        last_name=? 
    where
        employee_id=?
------------------------------
Id : 1
firstName : Venkata Ramarao
lastName : Bhadri
------------------------------
You can
get complete working application from this link.

No comments:
Post a Comment