JPA는 항상 엔티티 매니저를 통하여 등록/수정/삭제/조회 가 이루어진다.

 

 

 

- 등록

 

String id ="id1";
Member member = new Member();
member.setId(id);
member.setUsername("사용자");
member.setAge(20);

em.persist(member);

엔티티를 저장하려면 persist() 메소드에 저장할 엔티티를 넘겨주면 된다.

위의 코드는 INSERT 와 같은 기능을 하게 된다.

 

 

 

- 수정

 

member.setAge(20);

수정은 별도의 update()와 같은 메소드가 필요없이 set...()처럼 값만 변경해주면 가능하다.

위의 코드는 UPDATE 와 같은 기능을 하게 된다.

 

 

 

- 삭제

 

em.remove(member);

삭제는 remove(member) 메소드를 사용한다.

위의 코드는 DELETE 와 같은 기능을 하게 된다.

 

 

 

- 단건 조회

 

Member member = em.find(Member.class, id);

find() 메소드는 조회할 엔티티 타입과 @Id 로 데이터베이스 테이블의 기본키와 매핑한 식별자 값으로 조회한다.

위의 코드는 SELECT 와 같은 기능을 하게 된다.

'develop > JPA, Hibernate' 카테고리의 다른 글

엔티티 매핑, 기본키 할당 전략  (0) 2019.12.16
엔티티 매니저 설정, 생성과정  (0) 2019.11.24
데이터베이스 방언  (0) 2019.10.19
JPQL 이란? (querydsl)  (0) 2019.10.12
Hibernate 란?  (0) 2019.09.30

■ Run level 이란?

 

리눅스 시스템의 관리의 용이함을 위해 서비스의 실행을 단계별로 구분하여 적용하는 것을 말합니다.

리눅스의 런레벨은 0~6까지 있습니다. 

주로 사용하는 런레벨은 0, 3, 5, 6 이며, 런레벨의 변경은 root 사용자만 가능합니다. 

 

# 0 - halt (DO NOT set initdefault to this)

시스템 종료를 의미합니다. 런레벨을 0으로 변경하는것은 시스템 종료를 의미합니다.

 

# 1 - Single User Mode

시스템 복원모드 라고도 불리며, 기본적으로 관리자 권한 쉘을 얻게 됩니다.

주로 파일시스템을 점검하거나 관리자 암호를 변경할때 쓰입니다.

 

# 2 - Multi User Mode

NFS(Network File System) 를 지원하지 않는 다중 사용자 모드입니다.

네트워크를 사용하지 않는 텍스트 유저 모드라고 보면 됩니다.

 

# 3 - Full Milti User Mode

일반적인 쉘 기반의 인터페이스를 가진 다중 사용자 모드입니다.

쉽게 말하면 그래픽 유저 모드가 아닌 텍스트 유저 모드 입니다.

 

# 4 - unused

4번은 쓰이지 않습니다. 기본적으로는 사용되지 않지만 임의로 정해서 사용할 수 있습니다.

 

# 5 - X11

기본적으로는 레벨3과 같습니다. 다른점은 그래픽 유저모드 입니다.

 

# 6 - reboot

시스템 재부팅을 의미합니다. 런레벨을 6으로 변경하는것은 시스템 재부팅을 의미합니다.

 

 

시스템적으로 자세한 변경 방법은 원하신다면 하단의 출처를 참고 바랍니다.

 

 

출처) https://kateee.tistory.com/51

'IT 용어 정리' 카테고리의 다른 글

트랜잭션 (Transaction) 이란?  (0) 2019.10.14
Ioc/DI 란?  (0) 2019.10.09
Spring Boot 란?  (0) 2019.10.04
JVM 이란?  (0) 2019.09.30
DAO 와 DTO 란?  (0) 2019.09.26

우선적으로 자주쓰거나 중요한 어노테이션 위주로 정리할 예정이며, 추가적으로 사용하거나 알게되는 어노테이션이 있을 시 지속적으로 추가하여 기록할 예정입니다.

 

 

■ 어노테이션 이란?

 

일반적으로 스프링을 사용하다보면 @ 사인으로 시작하는 부분을 많이 볼 수 있는데, 이러한 것의 이름을 어노테이션 이라고 합니다. 어노테이션이 생기기 전에는 xml로 설정하여 관리 하였으나, 양이 너무 많아지면 관리 및 유지보수가 어려워 지는 단점이 있었습니다. 어노테이션이 생긴 이후부터는 사용과 관리가 매우 쉬워져 요즘은 대부분 어노테이션을 사용하여 개발을 합니다.

 

 

■ 어노테이션 의 종류

 

- @SpringBootApplication

Spring Boot 애플리케이션이 실행시 진입클래스를 가리키에 되는 어노테이션 입니다.

 

ex)

@SpringBootApplication
public class Application {
    public static void main(String arg[]){
        SpringApplication.run(Application.class, arg);
    }
}

 

- @RestController

view가 필요없는 API만을 지원하는 서비스에서 사용합니다. Spring에서 Controller 중 view로 응답하지 않는 Controller를 뜻합니다. 

 

ex)

@RestController
@RequestMapping("/v1/{mallId}/sales")
public class GiftishowRestApi {
  
   private final Logger logger = LoggerFactory.getLogger(getClass());

   @Autowired
   private GiftishowService giftishowService;

 

- @RequestMapping

Spring 컨트롤러의 URI 메소드를 정의하는데 쓰입니다. 요청받는 형식을 GET, POST, PATCH, PUT, DELETE 로 정의 할 수 있으며, 정의하지 않을경우 디폴트로 GET이 정의 됩니다.

 

ex)

@RestController
@RequestMapping("/v1/{mallId}/sales")
@Validated
public class AppInstallRestApi {

   @Autowired
   ApplicationService appService;

   @Autowired
   AppInstallService appInstallService;

   @Autowired
   MemberService memberService;

 

- @GetMapping, @PostMapping, @PatchMapping, @PutMapping, @DeleteMapping

각 매핑별로 Get을 예로 들면 위에서 설명한 @RequestMapping(Method=RequestMethod.GET) 와 같습니다.

각각의 형식별로 사용할 수 있습니다.

 

ex)

@GetMapping("/employees")
public List getAllEmployees() {
 return employeeRepository.findAll();
}

 

- @PathVariable

Http의 요청에 대해 매칭되는 request parameter값이 자동으로 매칭됩니다. 

 

ex)

@GetMapping("applications/{OsType}/application/{token}")
public ResponseEntity<?> getAppInstall(@PathVariable final String OsType
       , @PathVariable final String token, final ResponseMapper mapper) {
   AppInstall appInstall = appInstallService.getAppInstallByToken(mallId, token);
   if (appInstall == null) {
       mapper.mapFrom("result",false);
   }else{
       mapper.mapFrom("result",true);
       mapper.mapFrom("marketingAgreeYn", appInstall.getMktgReceiveAgreeYn());
          }
   return ResponseEntity.ok(mapper.getDto());
}

 

- @RequestBody

Http Post 요청에 대해서만 처리되며, Post 요청의 Request body에 있는 request message 의 값을 얻어와 매칭됩니다. 

 

ex)

@PostMapping("applications/application/{token}/agree")
public ResponseEntity<?> updateAppAgree(@RequestBody OpenApiDTO reqDto,
                                       @PathVariable final String mallId, @PathVariable final String token,
                                       final ResponseMapper mapper) {

   if (StringUtils.isBlank(reqDto.getValue("agreeYn", String.class))) {
       throw new BadRequestException("agreeYn must not be empty");
   }

   final AppInstall app = appInstallService.getAppInstallByToken(mallId,token);
   final AgreeYN ag = AgreeYN.valueOf(reqDto.get("agreeYn").toString());
   final Date today = new Date();

   if (app == null) {
       throw new NotFoundException("application not found");
   }

 

- @AutoWired

객체에 대한 의존성을 주입시키며, 해당 어노테이션을 사용할 시 스프링이 자동으로 값을 할당하게 됩니다. 일반적으로 Controller에서 DAO, Service를 주입시킬때 많이 사용합니다.

 

ex)

public class AppInstallRestApi {

   @Autowired
   ApplicationService appService;

   @Autowired
   AppInstallService appInstallService;

   @Autowired
   MemberService memberService;

   @Autowired
   MemberReceiveAgreeRepository repository;

 

- @Service

Service Implement에서 사용되며, 비즈니스 로직을 수행하는 클래스라는 것을 나타내는 용도이다.

 

@Service
@Transactional
public class MemberMyShopServiceImpl implements MemberMyShopService {

   private final Logger logger = LoggerFactory.getLogger(getClass());
  
   /* (non-Javadoc)
    * @see net.g1project.ecp.customer.service.MemberMyShopAService#createMyShopMember(java.lang.Long)
    */
   @Autowired
   private BWJPAQueryFactory factory;

   @Autowired
   private MemberMyshopHistRepository memberMyshopHistRepository;
...

 

 

 

'develop > Spring' 카테고리의 다른 글

Spring 이란? 간단 설명  (0) 2019.10.03

출처) https://min-it.tistory.com/7

        https://mangkyu.tistory.com/18

 

■ spring MVC (Model View Controller) 

spring MVC는 웹 개발시 대부분으로 사용하는 모델2 방식의 구조이다. 모델2 방식이란 한마디로 표현하여 화면을 담당하는 View의 부분과 데이터를 처리하는 비즈니스 로직을 분리하여 생각한 개념이다. 디자이너와 개발자의 작업 분리가 되어있어 작업하기 편리하고 재사용이 가능한 구조이다.

 

MVC 가 뜻하는 의미는

M (Model) : 데이터를 처리하는 부분

V (View) : 화면을 담당하는 부분

C (Controller) : 요청을 처리하는 부분으로 뷰와 모델 사이의 통신역할을 담당

 

 

(Spring MVC DispatcherServlet) 출처:  https://min-it.tistory.com/7  [MIN-IT]

1. 클라이언트(사용자)의 모든 요청은 DispatcherServlet이 받는다.

 

2. DispatcherServlet은 hanlderMapping을 통해서 요청에 해당하는 Controller를

실행 시킨다.

 

3. Controller는 적절한 서비스 객체를 호출 시킨다.

 

4. Service는 DB처리를 위해  DAO를 이용하여 데이터를 요청 한다.

 

5.DAO는 mybatis를 이용하는 Mapper를 통해 작업 처리를 한다.

 

6. 결과(처리한 데이터)가 mapper->DAO->Service->Controller로 전달된다.

 

7. Contorller는 전달된 결과(처리된 데이터)를 View Resolver를 통해

전달 받을 View가 있는지 검색한다.

 

8. 전달 받은 View가 있다면 View에게 전달된 결과(처리된 데이터)를 전달한다.

 

9. View는 전달받은 결과(처리된 데이터)를 다시 DispatcherServlet에게 전달한다.

 

10. DispatcherServlet은 전달받은 결과(처리된 데이터)를 클라이언트에게 전달한다.

 

Front Controller는 서버로 들어오는 모든 요청을 받아서 처리한다. 공동처리 작업을 먼저 수행한 후 적절한 세부 컨트롤러에 작업을 위임해주고 예외시 일관된 방식으로 예외를 처리해주는 역할을 한다. 이와 같은 역할을 하기 때문에 각 컨트롤러 사이의 중복된 코드 문제나 협업시 개발자들의 개발 방식이 다른 경우 등을 해결할 수 있다.

 

 

■ DispatcherServlet

spring에서 정의한 Front Controller이다. 클라이언트에서 어떤 요청이 들어오면 톰캣과 같은 서블릿컨테이너가 요청을 받는데, 이때 제일 앞에서 서버로 들어오는 모든 요청을 처리하는 기능을 한다. MVC구조에서 함께 사용하는 패턴이다.

 

DispatcherServlet의 등장으로 web.xml의 역할이 상당히 축소되었는데, 기존에는 모든 서블릿에 대해 URL패밍을 활용하기 위해서 web.xml에 모두 등록해주어야 헀지만, DispatcherServlet이 해당 어플리케이션으로 들어오는 모든 요청을 핸들링해주면서 작업이 상당히 편리하게 되었다. 

 

'IT 용어 정리' 카테고리의 다른 글

NoSQL 이란?  (0) 2019.09.17
node.js 란 무엇인가  (0) 2019.09.14
front end와 back end의 정의  (0) 2019.09.13
AJP 란?  (0) 2019.09.13
JDBC (Java Database Connectivity) 란?  (0) 2019.09.13

+ Recent posts