사이트 접속 후
사진과 같이 프로젝트 생성


아래 사진과 같이 패키지 생성
중요한점은 폴더가 모두 데모 밑에 있다는점 ! DemoApplication과 같은 위치


MenuDefinitionController
package com.example.demo.controller;
import com.example.demo.domain.MenuDefinition;
import com.example.demo.service.MenuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.ArrayList;
import java.util.List;
@Controller
public class MenuDefinitionController {
@Autowired
private MenuService menuService;
@PostMapping("menus")
@ResponseBody
public MenuDefinition addMenu(){
MenuDefinition menuDefinition1 = new MenuDefinition();
menuDefinition1.setMenuName("test1");
menuDefinition1.setPosition(1L);
menuDefinition1.setSuperMenuName("test");
menuService.addMenu(menuDefinition1);
return menuDefinition1;
}
}
MenuDefinition
package com.example.demo.domain;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
@Entity
@Table(name = "MENUDEFINITION")
public class MenuDefinition implements Serializable {
@Id
@Column(name = "MENUNAME")
private String menuName;
@Id
@Column(name = "POSITION")
private Long position;
@Id
@Column(name = "SUPERMENUNAME")
private String superMenuName;
public MenuDefinition() {
}
public MenuDefinition(String menuName, Long position, String superMenuName) {
this.menuName = menuName;
this.position = position;
this.superMenuName = superMenuName;
}
public String getMenuName() {
return menuName;
}
public void setMenuName(String menuName) {
this.menuName = menuName;
}
public Long getPosition() {
return position;
}
public void setPosition(Long position) {
this.position = position;
}
public String getSuperMenuName() {
return superMenuName;
}
public void setSuperMenuName(String superMenuName) {
this.superMenuName = superMenuName;
}
}
MenuDefinitionRepository
package com.example.demo.repository;
import com.example.demo.domain.MenuDefinition;
import java.util.List;
public interface MenuDefinitionRepository {
MenuDefinition create(MenuDefinition menuDefinition);
List<MenuDefinition> readAll();
// 추후 update
// 추후 delete
}
JPAMenuDefinitionRepository
package com.example.demo.repository;
import com.example.demo.domain.MenuDefinition;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import java.util.List;
@Repository
public class JPAMenuDefinitionRepository implements MenuDefinitionRepository{
@Autowired
private EntityManagerFactory emf;
private EntityManager em;
@Override
public MenuDefinition create(MenuDefinition menuDefinition) {
try {
em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
try{
em.persist(menuDefinition);
System.out.println("menuName : " + menuDefinition.getMenuName());
System.out.println("position : " + menuDefinition.getPosition());
System.out.println("supermenuName : " + menuDefinition.getSuperMenuName());
tx.commit();
}
catch (Exception e){
tx.rollback();
System.out.println(e.getMessage());
}
finally {
em.clear();
}
}
catch (Exception e){
System.out.println(e.getMessage());
}
return menuDefinition;
}
@Override
public List<MenuDefinition> readAll() {
return null;
}
}
MenuService
package com.example.demo.service;
import com.example.demo.domain.MenuDefinition;
import com.example.demo.repository.MenuDefinitionRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class MenuService {
@Autowired
private MenuDefinitionRepository menuDefinitionRepository;
public MenuDefinition addMenu(MenuDefinition menuDefinition){
return menuDefinitionRepository.create(menuDefinition);
}
}
application.properties
#spring.datasource.url=jdbc:oracle:thin:@localhost:1521:xe
spring.datasource.url=jdbc:oracle:thin:@192.168.219.108:1521:xe?TNS_ADMIN=D:/001.app/21c/homes/OraDB21Home1/network/admin
spring.datasource.username=modeler1
spring.datasource.password=modeler1
spring.datasource.driverClassName=oracle.jdbc.driver.OracleDriver
spring.jpa.hibernate.ddl-auto=none
spring.jpa.generate-ddl=false
spring.jpa.show-sql=true
spring.jpa.database=oracle
spring.jpa.database-platform=org.hibernate.dialect.Oracle12cDialect
logging.level.org.hibernate=info


마지막으로 테이블 생성 sql
-- menuDefinition
CREATE TABLE menuDefinition
(
menuName VARCHAR2(40),
position NUMBER(3),
superMenuName VARCHAR2(40)
);
ALTER TABLE menuDefinition ADD CONSTRAINT menuDefinition_pk PRIMARY KEY (menuName,position,superMenuName);
COMMENT ON
TABLE menuDefinition IS '메뉴정의';
COMMENT ON
COLUMN menuDefinition.menuName IS '메뉴이름';
COMMENT ON
COLUMN menuDefinition.position IS '메뉴순서';
COMMENT ON
COLUMN menuDefinition.superMenuName IS '상위메뉴이름';
'dev > 스프링' 카테고리의 다른 글
스프링 프로젝트 디렉토리 구조 (0) | 2017.12.11 |
---|
사이트 접속 후
사진과 같이 프로젝트 생성


아래 사진과 같이 패키지 생성
중요한점은 폴더가 모두 데모 밑에 있다는점 ! DemoApplication과 같은 위치


MenuDefinitionController
package com.example.demo.controller;
import com.example.demo.domain.MenuDefinition;
import com.example.demo.service.MenuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.ArrayList;
import java.util.List;
@Controller
public class MenuDefinitionController {
@Autowired
private MenuService menuService;
@PostMapping("menus")
@ResponseBody
public MenuDefinition addMenu(){
MenuDefinition menuDefinition1 = new MenuDefinition();
menuDefinition1.setMenuName("test1");
menuDefinition1.setPosition(1L);
menuDefinition1.setSuperMenuName("test");
menuService.addMenu(menuDefinition1);
return menuDefinition1;
}
}
MenuDefinition
package com.example.demo.domain;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
@Entity
@Table(name = "MENUDEFINITION")
public class MenuDefinition implements Serializable {
@Id
@Column(name = "MENUNAME")
private String menuName;
@Id
@Column(name = "POSITION")
private Long position;
@Id
@Column(name = "SUPERMENUNAME")
private String superMenuName;
public MenuDefinition() {
}
public MenuDefinition(String menuName, Long position, String superMenuName) {
this.menuName = menuName;
this.position = position;
this.superMenuName = superMenuName;
}
public String getMenuName() {
return menuName;
}
public void setMenuName(String menuName) {
this.menuName = menuName;
}
public Long getPosition() {
return position;
}
public void setPosition(Long position) {
this.position = position;
}
public String getSuperMenuName() {
return superMenuName;
}
public void setSuperMenuName(String superMenuName) {
this.superMenuName = superMenuName;
}
}
MenuDefinitionRepository
package com.example.demo.repository;
import com.example.demo.domain.MenuDefinition;
import java.util.List;
public interface MenuDefinitionRepository {
MenuDefinition create(MenuDefinition menuDefinition);
List<MenuDefinition> readAll();
// 추후 update
// 추후 delete
}
JPAMenuDefinitionRepository
package com.example.demo.repository;
import com.example.demo.domain.MenuDefinition;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import java.util.List;
@Repository
public class JPAMenuDefinitionRepository implements MenuDefinitionRepository{
@Autowired
private EntityManagerFactory emf;
private EntityManager em;
@Override
public MenuDefinition create(MenuDefinition menuDefinition) {
try {
em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
try{
em.persist(menuDefinition);
System.out.println("menuName : " + menuDefinition.getMenuName());
System.out.println("position : " + menuDefinition.getPosition());
System.out.println("supermenuName : " + menuDefinition.getSuperMenuName());
tx.commit();
}
catch (Exception e){
tx.rollback();
System.out.println(e.getMessage());
}
finally {
em.clear();
}
}
catch (Exception e){
System.out.println(e.getMessage());
}
return menuDefinition;
}
@Override
public List<MenuDefinition> readAll() {
return null;
}
}
MenuService
package com.example.demo.service;
import com.example.demo.domain.MenuDefinition;
import com.example.demo.repository.MenuDefinitionRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class MenuService {
@Autowired
private MenuDefinitionRepository menuDefinitionRepository;
public MenuDefinition addMenu(MenuDefinition menuDefinition){
return menuDefinitionRepository.create(menuDefinition);
}
}
application.properties
#spring.datasource.url=jdbc:oracle:thin:@localhost:1521:xe
spring.datasource.url=jdbc:oracle:thin:@192.168.219.108:1521:xe?TNS_ADMIN=D:/001.app/21c/homes/OraDB21Home1/network/admin
spring.datasource.username=modeler1
spring.datasource.password=modeler1
spring.datasource.driverClassName=oracle.jdbc.driver.OracleDriver
spring.jpa.hibernate.ddl-auto=none
spring.jpa.generate-ddl=false
spring.jpa.show-sql=true
spring.jpa.database=oracle
spring.jpa.database-platform=org.hibernate.dialect.Oracle12cDialect
logging.level.org.hibernate=info


마지막으로 테이블 생성 sql
-- menuDefinition
CREATE TABLE menuDefinition
(
menuName VARCHAR2(40),
position NUMBER(3),
superMenuName VARCHAR2(40)
);
ALTER TABLE menuDefinition ADD CONSTRAINT menuDefinition_pk PRIMARY KEY (menuName,position,superMenuName);
COMMENT ON
TABLE menuDefinition IS '메뉴정의';
COMMENT ON
COLUMN menuDefinition.menuName IS '메뉴이름';
COMMENT ON
COLUMN menuDefinition.position IS '메뉴순서';
COMMENT ON
COLUMN menuDefinition.superMenuName IS '상위메뉴이름';
'dev > 스프링' 카테고리의 다른 글
스프링 프로젝트 디렉토리 구조 (0) | 2017.12.11 |
---|