Light Blue Pointer
본문 바로가기

분류 전체보기298

Java의 메모리 관리와 가비지 컬렉션 Java의 메모리 구조힙 메모리(Heap Memory)용도객체와 배열이 저장되는 곳동적으로 생성된 데이터가 저장됨가비지 컬렉션의 주 대상메모리 할당런타임 시 동적으로 할당됨new 키워드를 사용하여 객체를 생성할 때 사용됨생명 주기힙 메모리에 할당된 객체는 프로그램 전체 실행 기간 동안 존재할 수 있다가비지 컬렉터에 의해 더 이상 참조되지 않는 객체는 자동으로 해제된다관리JVM이 관리하며, 가비지 컬렉션을 통해 자동으로 메모리를 해제한다수동으로 메모리를 해제할 필요가 없다크기일반적으로 스택 메모리보다 크며, 제한된 크기 안에서 동적으로 확장될 수 있다스택 메모리(Stack Memory):용도메서드 호출 시 생성되는 지역 변수와 함수 호출 정보를 저장한다메서드의 실행 컨텍스트(프레임)가 저장된다메모리 할당컴.. 2024. 5. 16.
Java 접근제어자 접근제어자는 클래스, 메서드, 변수, 생성자 등의 접근 권한을 설정하는 데 사용된다접근제어자는 코드의 가시성과 보안을 제어하는 중요한 역할을 한다public어디서나 접근할 수 있음을 의미동일한 클래스, 동일한 패키지, 다른 패키지의 클래스 모두에서 접근이 가능가장 높은 접근 수준을 가집니다.모든 클래스에서 접근할 수 있습니다.클래스, 메서드, 필드, 생성자에 적용할 수 있습니다.protected동일한 패키지 내의 클래스와 다른 패키지의 하위 클래스에서 접근할 수 있다동일 패키지의 클래스에서 접근할 수 있다다른 패키지의 하위 클래스에서도 접근할 수 있다클래스에는 적용할 수 없고, 필드, 메서드, 생성자에만 적용할 수 있다public class ProtectedClass { protected int p.. 2024. 5. 15.
Java에서 동일성과 동등성의 차이 동일성(Identity)동일성은 두 객체가 동일한 메모리 위치를 참조하는지 여부두 객체의 참조가 같은 객체를 가리키고 있는지를 확인하는 것== 연산자를 사용하여 동일성을 비교한다Primitive 타입은 == 연산자를 사용했을 때 값이 같으면 true를 리턴객체는 == 연산자를 사용했을 때 동일한 메모리 위치가 있으면 true를 리턴동등성(Equality)두 객체가 논리적으로 동일한 값을 가지는지두 객체의 내용이 같은지equals() 메서드를 사용하여 동등성을 비교기본적으로 Object 클래스의 equals() 메서드는 ==와 동일하게 동작하지만, 이를 재정의(overriding)하여 객체의 논리적 동등성을 비교할 수 있다String str1 = new String("Hello");String str2 =.. 2024. 5. 15.
JPA 사용할때 쿼리가 복잡해지는 경우의 해결방안 JPA(Java Persistence API)를 사용할 때 복잡한 쿼리를 구현하는 데는 여러 방법이 있고 상황에 따라 적절한 방법을 선택해야 한다.1. JPQL(Java Persistence Query Language)JPQL은 SQL과 유사한 문법을 사용하여 엔티티 객체를 대상으로 하는 쿼리를 작성할 수 있게 해준다복잡한 쿼리도 작성할 수 있으며, 데이터베이스 독립성을 유지할 수 있다javaCopy codeString jpql = "SELECT e FROM Employee e WHERE e.department.name = :deptName AND e.salary > :minSalary";TypedQuery query = entityManager.createQuery(jpql, Employee.class.. 2024. 5. 15.
Spring mvc 패턴 Spring MVC 패턴이란디자인 패턴의 일종으로 Spring MVC (Model-View-Controller) 패턴은 자바 기반의 웹 애플리케이션 프레임워크인 스프링 프레임워크에서 제공하는 웹 애플리케이션 개발을 위한 패턴이다.이 패턴은 애플리케이션의 각 부분을 분리하여 개발하고 유지보수를 용이하게 한다.Spring MVC는 크게 Model, View, Controller의 세가지 구성요소로 나뉜다Model모델은 애플리케이션의 데이터 및 비즈니스 로직을 포함합니다. 데이터베이스와 상호작용하고, 데이터를 처리하며, 그 결과를 반환한다Model의 구성요소도메인 객체: 애플리케이션에서 사용하는 데이터의 구조를 정의한다서비스: 비즈니스 로직을 구현한다DAO (Data Access Object): 데이터베이스와.. 2024. 5. 14.
Spring JPA 상속 관계 일반적으로 RDBMS에서는 상속 관계를 지원하지 않지만JPA(Java Persistence API) 는 상속 관계를 지원해서 객체지향 모델링을 데이터베이스에 매핑해준다일반적으로 JPA에서는 상속 관계를 세 가지 전략으로 매핑한다단일 테이블 전략 (Single Table Strategy)통합 테이블로 변환모든 엔티티 클래스의 필드를 하나의 테이블에 매핑한다부모 클래스와 자식 클래스의 모든 필드가 테이블의 열로 매핑되며, 부모 클래스와 자식 클래스를 구분하는 열(Discriminator Column)이 추가된다장점간단하고 효율적이다조인이 필요하지 않아서 대체로 조회 성능이 좋다조인이 필요하지 않아서 조회 쿼리가 단순하다INSERT시 쿼리가 한 번만 호출된다단점모든 필드가 하나의 테이블에 있기 때문에 엔티티.. 2024. 5. 10.
Exception authenticating MongoCredential{mechanism=SCRAM-SHA-256, userName='root', source='admin', password=<hidden>, mechanismProperties=<hidden>}] with root cause 🚩문제 : MongoDB 연결이 되지 않고 에러 발생2024-05-09T20:16:58.672+09:00 ERROR 23172 --- [core] [nio-8081-exec-3] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.springframework.data.mongodb.UncategorizedMongoDbException: Exception authenticating MongoCredential{mechanism=SCRAM-SHA-256, userNa.. 2024. 5. 9.
Spring Transactional Transaction데이터베이스에서 수행되는 작업 단위데이터베이스 시스템이 보장해야 하는 성질원자성 (Atomicity)원자성은 트랜잭션이 완전히 성공하거나 완전히 실패하는 단일 단위로 처리되도록 보장한다.즉, 트랜잭션 내에서 수행되는 모든 작업은 모두 성공하거나 모두 실패해야 한다.어떤 작업이 실패하면 이전의 변경 사항은 롤백되어야 한다. 🍿 예시로 설명해보자~Alice가 Bob에게 100달러를 송금하려는 트랜잭션을 생각해보자.이 트랜잭션 내에서는 Alice의 계좌에서 100달러를 빼는 작업과 Bob의 계좌에 100달러를 추가하는 작업이 함께 수행된다.Alice의 계좌에서 돈을 빼는 작업이 성공하고 Bob의 계좌에 돈을 추가하는 작업이 실패할 경우, Alice의 계좌에서 빼었던 돈이 롤백되어야 한다... 2024. 5. 9.
Spring AOP Aspect Oriented ProgrammingAspectAspect: 여러 클래스나 모듈에 영향을 미치는 기능의 모듈화된 단위로깅, 보안, 트랜잭션 관리와 같이 프로그램의 비즈니스 로직과 분리할 수 있는 부분을 묶은 것주요 비즈니스 로직 안에 저런 코드들을 분산해서 모두 넣지 않고 한 곳에서 관리할 수 있게 한다.In Spring AOPaspect를 일반 클래스로 구현하는 방식(the schema-based approach)와 @Aspect 어노테이션으로 주석이 달린 일반 클래스(@AspectJ style)로 구현하는 방식 두가지가 있다.Join point어떤 method의 실행 / Exception을 handling할 때 와 같이 프로그램 실행 중에 만나는 어떤 포인트이다.In Spring AOP .. 2024. 5. 8.