- [로드맵] Learn about APIs2024-11-20 09:37:04API(Application Programming Interface)는 서로 다른 소프트웨어 애플리케이션이 서로 통신하고 상호 작용할 ㅅ ㅜ있도록 하는 정의된 규칙과 프로토콜의 집합이다. 개발자가 내부 작동 방식을 이해할 필요 없이 서비스, 애플리케이션 또는 플랫폼의 기능이나 데이터에 액세스하고 조작할 수 있는 표준화된 방법을 제공한다. API는 공개 또는 비공개일 수 있으며 일반적으로 서로 다른 시스템을 통합하고 타사 개발을 용이하게 하며 애플리케이션 간 상호 운용성을 가능하게 하는데 사용된다.일반적으로 엔드포인트, 요청 방법(GET, POST, PUT 등) 및 상호 작용할 데이터 형식(JSON 또는 XML 등)이 포함된다.ref) API에 대한 다양한 접근 방식들ref) API 설계 원칙ref) 인증..
- 엔티티 매니저에 대해 설명해주세요.2024-11-19 10:20:30엔티티 매니저에 대해 알기 위해선 영속성 컨텍스트에 대해 알아야 합니다. 영속성 컨텍스트는 엔티티를 영구 저장하는 환경으로 1차 캐싱, 쓰기 지연, 변경 감지를 통해 영속 로직을 효율적으로 할 수 있게 해줍니다. 이러한 효율적인 영속 로직 수행을 위해서 엔티티는 영속성 컨텍스트에 관리되어야 합니다. 이런 작업을 도와주는 것이 바로 엔티티 매니저입니다. 엔티티 매니저는 엔티티의 상태를 변경하고, 영속성 컨텍스트와 상호작용함으로써 영속 로직을 수행하는 역할을 가지고 있습니다.조금 더 구체적으로 엔티티 매니저의 역할을 설명해 주실 수 있을까요? 🤔엔티티는 영속성 컨텍스트와 관련하여 4가지 상태(비영속, 영속, 준영속, 삭제)를 가질 수 있는데요. 엔티티 매니저는 persist, merge, remove, c..
- [로드맵] RDB2024-11-19 10:16:01MySQLMySQL은 속도, 안정성, 사용 편의성으로 유명한 오픈소스 관계형 데이터베이스 관리 시스템 (RDBMS)이다.데이터베이스 상호 작용에 SQL(구조적 쿼리 언어)을 사용하고 트랜잭션, 인덱싱, 저장 프로시저를 포함한 다양한 데이터 관리 기능을 지원한다. MySQL은 확장성과 유연성으로 인해 웹 애플리케이션, 데이터 웨어하우징 및 기타 다양한 애플리케이션에 널리 사용된다. 많은 프로그래밍 언어 및 플랫폼과 잘 통합되며 LAMP(Linux, Apache, MySQL, PHP/Python/Perl)와 같은 인기 있는 소프트웨어 스택의 웹 서버 및 프레임워크와 함께 사용되는 경우가 많다. MySQL은 Oracle Corporation에서 유지 관리하며 개발 및 사용을 지원하는 대규모 커뮤니티와 생태계가..
- JPA의 ddl-auto 옵션은 각각 어떤 동작을 하고 어떤 상황에서 사용해야 할까요?2024-11-18 09:34:36ddl-auto 옵션은 스프링 부트 애플리케이션에서 Hibernate와 같은 JPA 구현체를 사용할 때 데이터베이스 스키마 관리를 제어하는 설정입니다. 이 옵션은 application.properties 또는 application.yml 파일에서 설정할 수 있으며, 다양한 값에 따라 데이터베이스 스키마에 대해 다른 동작을 수행합니다. ddl-auto 옵션에는 none, validate, update, create, create-drop 등이 존재합니다.각 옵션에 대한 설명을 해주시겠어요? 🤔[none]으로 설정하면 데이터베이스 스키마와 관련된 어떠한 작업도 수행하지 않습니다. 데이터베이스 스키마를 수동으로 관리하고 싶을 때 유용하며, 프로덕션 환경에서 주로 사용됩니다.[validate]는 애플리케이션이..
- [로드맵] Relational Database2024-11-18 09:28:28관계형 데이터베이스는 스키마를 사용하여 데이터 관계와 제약 조건을 정의하고 행과 열이 있는 구조화된 테이블로 데이터를 구성하는 데이터베이스 관리 시스템(DBMS)의 한 유형이다. 관계형 데이터베이스는 구조화된 쿼리 언어(SQL)를 사용하여 데이터를 쿼리하고 관리하며 데이터 검색, 삽입, 업데이트 및 삭제와 같은 작업을 지원한다. 관계형 데이터베이스는 키(기본 및 외래)와 제약 조건(예: 고유 및 null이 아님)을 통해 데이터 무결성을 강화하며 복잡한 쿼리, 트랜잭션 및 데이터 관계를 효율적으로 처리하도록 설계되었다. 관계형 데이터베이스의 예로는 MySQL, PostgreSQL 및 Oracle Database가 있다. 구조화된 데이터 저장, 강력한 일관성 및 복잡한 쿼리 기능이 필요한 애플리케이션에 일반..
- Spring Data Jpa에서 새로운 Entity인지 판단하는 방법은 무엇일까요?2024-11-17 13:19:56새로운 Entity인지 판단하는 방법@Overridepublic boolean isNew(T entity) { if(versionAttribute.isEmpty()) || versionAttribute.map(Attribute::getJavaType).map(Class::isPrimitive).orElse(false)) { return super.isNew(entity); } BeanWrapper wrapper = new DirectFieldAccessFallbackBeanWrapper(entity); return versionAttribute.map(it -> wrapper.getPropertyValue(it.getName()) == null).orE..
- [로드맵] GitHub / GitLab / Bitbucket2024-11-17 13:14:46GitHubGitHub는 Git을 사용한 버전 제어 및 협업을 위한 웹 기반 플랫폼이다.Microsoft가 소유하고 있으며, 소프트웨어 개발을 위한 호스팅을 제공하고 기본 Git 기능을 넘어서는 기능을 제공한다.GitHub에는 프로젝트 관리, 코드 검토 및 소셜 코딩을 위한 도구가 포함되어 있다. 주요 기능으로는 코드 저장을 위한 레포지토리, 변경 사항을 제안하고 검토하기 위한 풀 리퀘스트, 버그 및 작업을 추적하기 위한 이슈, 워크 플로 자동화를 위한 작업이 있다. 공개 및 비공개 레포지토리를 모두 지원하므로 오픈 소스 프로젝트와 비공개 개발에 인기가 있다.레포지토리 포킹 및 인라인 코드 주석과 같은 GitHub의 협업 기능은 팀 개발 밑 커뮤니티 기여를 용이하게 한다.광범위 한 통합과 대규모 사용자 ..
- @ResponseBody(or ResponseEntity<T>) 가 있을 때와 없을 때의 동작 방식의 차이점을 말해주세요.2024-11-16 15:31:09@ResponseBody(or ResponseEntity)가 있을 때와 없을 때 차이점@ResponseBody 혹은 ResponseEntity 반환을 사용한다면, 스프링은 컨트롤러에서 반환된 값을 HTTP 응답 본문에 직접 씁니다. 이때 자바 객체를 자동으로 JSON이나 XML 등의 타입으로 직렬화합니다. 만약, 없는 경우에는 스프링은 반환값을 뷰 이름으로 해석합니다. 뷰 이름으로 해석한 이후에, 뷰 리졸버를 사용해 뷰를 찾고 응답합니다.(뷰에 전달할 모델이 있다면, 이를 뷰에 전달하고 응답합니다.)@ResponseBody와 ResponseEntity 반환 중 어떤 방식이 더욱 좋나요? 😀@ResponseBody를 사용하는 경우, 코드를 간결하게 유지할 수 있습니다. 하지만, 상태코드와 헤더를 유연하게..