목록전체 글 (165)
현제의 현재이야기
새로운 인스턴스이기 때문에 다르다. 그러나 자바 컬렉션에서는 같다. 값을 반환하기 때문 결론: 객체 답게 모델링 할수록 매핑 작업만 늘어난다. -> 그래서 JPA가 나옴 About JPA ORM: Object Relational Mapping{객체 관계 매핑} 객체는 객체대로 설계, 관계형 데이터베이스와 매핑을 해준다. JPA는 JDBC API와 애플리케이션 사이에서 존재 🚨JPA 부분이 중요한게 패러다임 불일치를 해결해준다는 것 상속된 것도 알아서 매핑해줘서 CRUD해준다. 연관 관계와 객체 그래프 탐색(멤버 꺼내고 멤버에서 team꺼내고) 신뢰할 수 있는 엔티티, 계층 동일한 트랜잭션에서 조회한 엔티티는 같음을 보장 성능 최적화 기능 1차 캐시와 동일성 보장(4번과 동일): jpa.find를 하면, ..
코드 출처: 점프 투 자바 class Counter { static int count = 0; Counter() { count++; // count는 더이상 객체변수가 아니므로 this를 제거하는 것이 좋다. System.out.println(count); // this 제거 } } public class Sample { public static void main(String[] args) { Counter c1 = new Counter(); Counter c2 = new Counter(); } } 자바 공부를 하다가 static이라는 개념이 나오길래 생소해서 찾아봄 자바의 static 변수와 파이썬의 전역변수는 비슷한 개념이지만 몇 가지 차이점이 있다. 자바에서 static 변수는 해당 클래스에 속한 ..
값을 바꾸고 싶지 않을 때 final 사용 final int y = 30; long(+L), int, short, byte double float(+f), 더블이 더 크다. boolean char(+''), String(+"") < 이거 위주로 쓰인다. 형변환 int j = (int) 30L; 강제로 작은 타입으로 형변환 long ll = 30; < 작은 값을 큰 상자에 넣으면 그냥 들어간다. printf %s < 스트링문자열 /%d int i = Integer.parseInt(str); 다시 되돌리는 것 String str2 = String.valueof(i); Random random = new Random(); int rand = random.nextInt(bound:10); 입력 Scanner s..
중복 검사 class UserSerializer(RegisterSerializer): nickname = serializers.CharField(max_length=50) name = serializers.CharField(max_length=50) subscription = serializers.BooleanField(default=False) class Meta: model = User fields = ['email', 'password', 'nickname', 'name', 'subscription'] def validate(self, data): nickname = data['nickname'] if User.objects.filter(nickname=nickname).exists(): raise..
전에 내가 구현했던 구글 로그인은 drf에서 구글로그인이 진행된 것이기에 혼자 구글로그인창 띄우고 구글로부터 인증을 받아 code를 받고, access token을 받고 북치고 장구치고 다했다. 그렇지만 react, 즉 프론트와의 연결을 시도하면 무수한 오류가 뜸과 더불어서 뭔가 잘 안됐다. 10시간가량 삽질한 결과.. react와 연동할 때는 auth_code 혹은 access_token 자체를 프론트엔드로부터 받아오는 작업을 했어야 됐다. 즉 프론트에서 구글 인증을 시도하고 거기에서 나오는 부산물만 백으로 넘겨서 서버 작업을 진행하는 것이다! 아무리 뒤져도 안나오길래 삽질을 오지게 한 결과.. 은근히 소셜 로그인은 access token만 받아오면 끝나는 간단한 문제여따.. 우선 뭐 간단하게 Oaut..
시리얼라이저를 쓰지 않고 post 하는 방법을 깨달았다. class TranslateView(APIView): def post(self, request): text = request.data.get('text') client = translate.Client() result = client.translate(text, target_language='ko') return Response({'translation': result['translatedText']}, status=status.HTTP_200_OK) 그냥 post할 때 {"text": ""}를 해서 보내면 알아서 request.data에 'text'가 추가되어서 보내진다(!) 그리고나서 Response에도 그냥 적어서 보내면 됨. 얼마나 편리한가..