전체 글
-
git bash로 이미 커밋된 github authored 변경하기2023.08.30
-
Java 024. 배열(Array)(2)2023.06.29
-
Java 021. 배열(Array)(1)2023.04.09
-
Java 020. switch - case 조건문2023.04.09
git bash로 이미 커밋된 github authored 변경하기
초반에 깃에 대해서 잘 알지 못할 때 이름과 이메일주소를 신경쓰지 않고 무지성 commit을 해버려서 잔디를 제대로 심지 못했는데 git bash 터미널로 authored를 변경할 수 있다는 것을 알게 되었다.
git rebase 명령어를 이용해서 변경이 가능하다.
https://madplay.github.io/post/change-git-author-name
git commit author 변경 (커밋 작성자 변경하기)
git commit 작성자를 잘못 입력하여 push까지 해버렸다. 커밋 작성자의 이름을 다시 바꿀 수 있을까?
madplay.github.io
윗 분 포스트를 참고했다.
커밋 양이 많다면 노가다를 좀 해야한다... 한번에 많은 커밋을 변경하지는 못한다.
authored를 변경할 레파지토리 파일을 Open Git Bash로 열어주면 Git Bash와 Git Hub가 알아서 연결된다.
git bash 복사
ctrl + ins
git bash 붙여넣기
shift + ins
Spring Boot. [JPA] BaseTimeEntity - 생성, 수정시간을 갖는 객체
BaseTimeEntity.java
여러 테이블에서 공통으로 사용되는 생성 시간, 수정 시간을 프로퍼티로 갖는 객체를 설계
@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public class BaseTimeEntity {
@CreatedDate
private LocalDateTime createdTime;
@LastModifiedDate
private LocalDateTime modifiedTime;
엔터티 클래스의 필드 이름은 자바의 관습인 camel 표기법으로 작성.
테이블의 컬럼 이름은 데이터베이스의 관습인 snake 표기법으로 작성.
@MappedSuperclass
다른 도메인(엔터티) 클래스의 상위 클래스로 사용됨.
상속하는 하위 클래스는 BaseTimeEntity가 정의하는 컬럼들을 갖게 됨.
@EntityListeners(AuditingEntityListener.class)
main 메서드를 갖고 있는 메인 클래스에서 JPA Auditing 기능이 활성화되어 있는 경우에 엔터티가 삽입/수정되는 시간이 자동으로 기록되도록 하기 위해서 사용.
@CreateDate
insert 될 때의 시간이 자동으로 기록 됨.
@LastModifiedDate
update 될 때의 시간이 자동으로 기록 됨.
Post.java
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Getter
@ToString
@Entity
@Table(name = "POSTS")
@SequenceGenerator(name = "POSTS_SEQ_GEN", sequenceName = "POSTS_SEQ", allocationSize = 1)
public class Post extends BaseTimeEntity {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "POSTS_SEQ_GEN")
private Long id;
@Column(nullable = false)
private String title;
@Column(nullable = false)
private String content;
@Column(nullable = false)
private String author;
}
@Entity
JPA 엔터티 클래스 - 데이터베이스 테이블과 매핑되는 클래스.
@Table
엔터티 클래스의 이름이 데이터베이스 테이블이름과 다른 경우, 테이블 이름을 명시.
@SequenceGenerator
- name - 기본 키 생성자 이름은 POSTS_SEQ_GEN
- sequenceName - SEQ_GENERATOR가 사용할 데이터베이스의 시퀀스 객체는 POSTS_SEQ
- allocationSize - 시퀀스 객체 호출 시 증가하는 값은 1로 지정
@GeneratedValue
- 생성 전략을 GenerationType.SEQUENCE으로 지정
- 기본 키 생성자를 POSTS_SEQ_GEN으로 지정
SpringApplication.java
@EnableJpaAuditing
@SpringBootApplication
public class Spring3Application {
public static void main(String[] args) {
SpringApplication.run(Spring3Application.class, args);
}
}
@EnableJpaAuditing
JPA Auditing 기능을 활성화 함.
@SpringBootApplication
스프링 부트의 가장 기본적인 설정을 선언
Java 024. 배열(Array)(2)
문자열 3개를 저장할 수 있는 배열(names)을 선언, 초기화.
String[] names = new String[3];
배열 names에 문자열을 하나씩 저장
names[0] = "김하늬";
names[1] = "김바람";
names[2] = "철이";
배열 names의 내용을 한 줄로 출력
for 구문
for ( int i = 0; i < names.length; i++) {
System.out.print(names[i] + " ");
}
for-each 구문
for (String n : names) {
System.out.print(n + " ");
}
'language > Java' 카테고리의 다른 글
경로 [/...]의 컨텍스트 내의 서블릿 [dispatcherServlet]을(를) 위한 Servlet.service() 호출이, 근본 원인(root cause)과 함께, 예외 [Request processing failed; nested exception is org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.(...).(...).repository.(...)Repository.deleteByMtid]을(를) 발생시켰습니다.
이 오류는 mapper의 id값(delete로 되어있었음)과 Repository의 deleteByMtid 메서드명이 일치하지 않아서 생긴 오류이다.
mapper의 id값을 deleteByMtid로 바꿔주었다.
굉장히 어이없는 ㅎㅎ 실수를 많이한다... 정신 차리고 공부해야지 ...
'language > Java' 카테고리의 다른 글
Java 024. 배열(Array)(2) (0) | 2023.06.29 |
---|---|
Java 022. MyBatis 오류 ReflectionException: Error instantiating class ... with invalid types ... or values ... Cause: java.lang.IllegalArgumentException (0) | 2023.06.25 |
Java 021. 배열(Array)(1) (0) | 2023.04.09 |
Java 020. switch - case 조건문 (0) | 2023.04.09 |
Java 019. 무한 루프 while문 / switch문 / 입출금 자바 프로그램 (0) | 2023.04.09 |
Java 022. MyBatis 오류 ReflectionException: Error instantiating class ... with invalid types ... or values ... Cause: java.lang.IllegalArgumentException
나의 경우 db에 데이터가 잘 못 들어가 있었기 때문에 잘 못 된 데이터를 지워주니 해결됐다.
values (12,null,null,null,0,0,null,테스트) values값이 12인 12번째의 db데이터를 삭제해주었다.
MyBatis 필드 매핑 시도할 때 마주친, “org.mybatis.spring.MyBatisSystemException:
올해 2월 중순 경… 마이바티스를 처음으로 접한 후 필드를 매핑하면서
medium.com
'language > Java' 카테고리의 다른 글
Java 024. 배열(Array)(2) (0) | 2023.06.29 |
---|---|
Java 023. 오류 경로 [/...]의 컨텍스트 내의 서블릿 [dispatcherServlet]을(를) 위한 Servlet.service() 호출이, 근본 원인(root cause)과 함께, 예외 [Request processing failed; nested exception is org.apache.ibatis.binding.Binding.. (0) | 2023.06.26 |
Java 021. 배열(Array)(1) (0) | 2023.04.09 |
Java 020. switch - case 조건문 (0) | 2023.04.09 |
Java 019. 무한 루프 while문 / switch문 / 입출금 자바 프로그램 (0) | 2023.04.09 |
Oracle 오류 The Network Adapter could not establish the connection 해결 방법
컴퓨터를 재부팅할 때 마다 오라클 접속이 안되어서 이것저것 해보다가 해결방법을 찾았다.
접속은 실패하고 The Network Adapter could not establish the connection이라는 오류가 뜬다.
확인해보니 컴퓨터 부팅 할 때마다 ip 주소가 바뀌고 있었다...
조금 귀찮긴 해도 부팅을 할 때마다 listener파일과 tnsnames파일을 수정해주면 해결된다.
listener.ora 파일과 tnsnames.ora 파일의 경로는
app\(사용자명)\product\21c\homes\OraDB21Home2\network\admin
메모장으로 파일을 열어주고,
명령크롬프트에서 확인한 변경된 ip주소를 복사해서 host의 ip 주소를 바꿔주면 된다.
listener는 한 부분만 바꿔주면 된다.
tnsnames는 두 부분을 바꿔주면 된다.
바꿔주었으면 메모장을 저장 후
윈도우 서비스관리창을 열어준다.
대부분 이미 실행중인데 실행중이 아닌 것은 실행시켜주고,
OracleServiceXE를 다시 시작 해주면 오류가 해결되어 오라클 계정에 잘 접속된다.
매번 부팅을 할 때마다 이렇게 해결해야 하는게 맞나싶고 번거롭지만
아무리 검색을 해보아도 이 해결방법만 먹혔다 ㅜㅜ
Java 021. 배열(Array)(1)
배열(Array)이란?
배열(array)은 같은 타입의 데이터 여러개를 하나의 변수 이름으로 저장하기 위한 메모리이다.
배열을 구성하는 각각의 값을 배열 요소(element)라고 하며, 배열에서의 위치를 가리키는 숫자를 인덱스(index)라고 한다.
배열의 인덱스(index)는 0부터 시작한다. 그러므로 배열의 마지막 인덱스는 항상 배열 원소 개수 -1이 된다.
배열은 같은 타입의 데이터만 저장할 수 있다. (선언과 동시에 저장할 수 있는 타입이 결정됨)
한번 생성된 배열은 길이를 늘리거나 줄일 수 없다.
배열 선언
(1) 타입[ ] 배열이름; (2) 타입 배열이름 [ ]; |
배열 생성
(1) new 연산자로 배열 생성 타입[ ] 변수 = new 타입[ 길이 ]; (2) 값 목록으로 배열 생성 타입[ ] 변수 = { 값0, 값1, 값2, 값3, ... }; |
(1) new 연산자로 배열 생성
int[] scores = new int[4]; -> scores는 int(정수) 4개를 저장할 수 있는 int배열이다.
//int arr[ ] = new int[10];
<배열의 특정 인덱스에 원소 재할당>
scores[0] = 100; // 100이라는 값을 score 0에 저장.
scores[1] = 90;
<배열의 특정 인덱스에 저장된 원소의 값 읽기>
System.out.println(scores[0]);
System.out.println(scores[1]);
System.out.println(scores[2]);
System.out.println(scores[3]);
실행 결과 =
100
90
0
0
<배열 length 속성>
System.out.println("length = " + scores.length);
실행 결과 =
length = 4
모든 배열은 배열의 길이(배열의 원소 개수)를 알려주는 length 속성을 가지고 있다.
* 굳이 4라고 하지 않고 조건문에 배열의 length로 써주는 이유는
인덱스의 배열이 바뀌더라도 for문의 조건식을 바꾸지 않고 사용할 수 있기 때문임.
<for문을 사용해 배열의 원소를 하나씩 꺼내기>
for (int i = 0; i < scores.length; i++) {
System.out.println(scores[i]);
}
scores.length는 4이기 때문에 i가 4보다 작을때 까지 반복문을 실행한다.
실행 결과 =
100
90
0
0
(2) 값 목록으로 배열 생성
int[] numbers = {100, 90, 0, 50}; -> numbers는 int(정수) 4개를 저장할 수 있는 int배열이다.
//int[ ] numbers = new int[ ] {100, 90, 0, 50};
쉼표로 원소들이 구별되어서 몇개인지 쓰지 않아도 된다.
<향상된 for문(for - each)을 사용해 배열의 원소를 하나씩 꺼내기>
for (int x : numbers) {
System.out.println(x);
}
실행 결과 =
100
90
0
50
'language > Java' 카테고리의 다른 글
Java 020. switch - case 조건문
switch - case 조건문
switch - case문은 if - else문과 비슷한 조건 제어문이다.
하지만 switch문은 if문처럼 조건식이 true일 경우에 실행문을 실행하는 것이 아닌
변수의 값에 따라 실행문이 선택된다.
조건식의 변수의 값에 따라 해당 case위치로 이동해서 break를 만날 때 까지 코드를 실행한다.
if문은 조건식의 결과가 true, false 두 가지밖에 없기 때문에 경우의 수가 많아질수록 else - if를 반복적으로 추가해줘야하는 반면에 switch문은 변수의 값에 따라서 실행문이 결정되기 때문에 if문보다 간결하게 코드를 작성할 수 있다.
switch (조건식) { case 값 1: 실행문1; break; case 값 2: 실행문2; break; ... ... default: 실행문; } |
default는 조건식이 모든 case가 아닐때 실행한다.
case에 사용 가능한 변수 타입
- 정수 : byte, short, int, long, char
- 문자열 : String
- 열거형 자료 타입(enum)
정수를 사용한 swtich문
int n = 17;
switch (n % 2) {
case 0:
System.out.println("짝수");
break;
case 1:
System.out.println("홀수");
break;
}
실행 결과 =
홀수
*switch문에서는 실수 float, double을 사용할 수 없다.
double x = 1.0;
switch (x) {
case 1.0:
break;
case 2.0:
break;
}
문자열을 사용한 swtich문
String time = "점심";
switch (time) {
case "아침":
System.out.println("breakfast");
break;
case "점심":
System.out.println("lunch");
break;
case "저녁":
System.out.println("dinner");
break;
default:
System.out.println("snack");
}
실행 결과 =
lunch
*switch문에서는 boolean(==)을 사용할 수 없다.
enum 타입을 사용한 switch문
열거형 자료 타입인 enum(enumeration type)은 한정된 값(상수)들만 갖는 데이터 타입이다.
public enum Season {
SPRING, SUMMER, FALL, WINTER;
}
이런식으로 개발자가 정의하여 타입을 만든 것이 enum이다.
Season s = Season.WINTER;
switch (s) {
case SPRING:
System.out.println("봄");
break;
case SUMMER:
System.out.println("여름");
break;
case FALL:
System.out.println("가을");
break;
case WINTER:
System.out.println("겨울");
break;
(enum은 따로 정리를 할 예정이다.)
'language > Java' 카테고리의 다른 글
Java 022. MyBatis 오류 ReflectionException: Error instantiating class ... with invalid types ... or values ... Cause: java.lang.IllegalArgumentException (0) | 2023.06.25 |
---|---|
Java 021. 배열(Array)(1) (0) | 2023.04.09 |
Java 019. 무한 루프 while문 / switch문 / 입출금 자바 프로그램 (0) | 2023.04.09 |
Java 018. for / while 문을 사용해서 별(*) 을 삼각형으로 출력하기 (0) | 2023.04.03 |
Java 017. 이중 반복문 for / while / break (2) (0) | 2023.04.02 |